//Copyright (c) 2018 Yardi Technology Limited. Http://www.kooboo.com 
//All rights reserved.
using System;
using System.Collections.Generic;

namespace Kooboo.Dom
{
    public class CharacterReferences
    {
        /// <summary>
        /// get one or two char from the named character code. 
        /// </summary>
        /// <param name="key">key in the formate of &xxxx;</param>
        /// <returns></returns>
        public static string getNamedCharacters(string key)
        {
            string value = namedCharacters()[key];
            if (string.IsNullOrEmpty(value))
            {
                return string.Empty;
            }
            else
            {
                ///this contains two code point. \0000\4444.
                if (value.LastIndexOf(@"\") > 0)
                {
                    // there are two tokens here. 
                    string one = value.Substring(0, value.LastIndexOf(@"\"));
                    string two = value.Substring(value.LastIndexOf(@"\"));

                    return getChar(one) + getChar(two);
                }
                else
                {
                    return getChar(value);
                }
            }
        }

        /// <summary>
        /// get the representation char from the unicode string.
        /// </summary>
        /// <param name="unicodestring"></param>
        /// <returns>the string in the formate of \uxxxx; </returns>
        private static string getChar(string unicodestring)
        {
            string strHexCode = unicodestring.Replace(@"\u", "");
            int codepoint = Convert.ToInt32(strHexCode, 16);

            return char.ConvertFromUtf32(codepoint);

        }

        private static Dictionary<string, string> _charRef;
        public static Dictionary<string, string> namedCharacters()
        {
            if (_charRef == null)
            {
                _charRef = new Dictionary<string, string>();

                 _charRef.Add("&Aacute;", "\u00C1");
                _charRef.Add("&Aacute", "\u00C1");
                _charRef.Add("&aacute;", "\u00E1");
                _charRef.Add("&aacute", "\u00E1");
                _charRef.Add("&Abreve;", "\u0102");
                _charRef.Add("&abreve;", "\u0103");
                _charRef.Add("&ac;", "\u223E");
                _charRef.Add("&acd;", "\u223F");
                _charRef.Add("&acE;", "\u223E\u0333");
                _charRef.Add("&Acirc;", "\u00C2");
                _charRef.Add("&Acirc", "\u00C2");
                _charRef.Add("&acirc;", "\u00E2");
                _charRef.Add("&acirc", "\u00E2");
                _charRef.Add("&acute;", "\u00B4");
                _charRef.Add("&acute", "\u00B4");
                _charRef.Add("&Acy;", "\u0410");
                _charRef.Add("&acy;", "\u0430");
                _charRef.Add("&AElig;", "\u00C6");
                _charRef.Add("&AElig", "\u00C6");
                _charRef.Add("&aelig;", "\u00E6");
                _charRef.Add("&aelig", "\u00E6");
                _charRef.Add("&af;", "\u2061");
                _charRef.Add("&Afr;", "\uD835\uDD04");
                _charRef.Add("&afr;", "\uD835\uDD1E");
                _charRef.Add("&Agrave;", "\u00C0");
                _charRef.Add("&Agrave", "\u00C0");
                _charRef.Add("&agrave;", "\u00E0");
                _charRef.Add("&agrave", "\u00E0");
                _charRef.Add("&alefsym;", "\u2135");
                _charRef.Add("&aleph;", "\u2135");
                _charRef.Add("&Alpha;", "\u0391");
                _charRef.Add("&alpha;", "\u03B1");
                _charRef.Add("&Amacr;", "\u0100");
                _charRef.Add("&amacr;", "\u0101");
                _charRef.Add("&amalg;", "\u2A3F");
                _charRef.Add("&AMP;", "\u0026");
                _charRef.Add("&AMP", "\u0026");
                _charRef.Add("&amp;", "\u0026");
                _charRef.Add("&amp", "\u0026");
                _charRef.Add("&And;", "\u2A53");
                _charRef.Add("&and;", "\u2227");
                _charRef.Add("&andand;", "\u2A55");
                _charRef.Add("&andd;", "\u2A5C");
                _charRef.Add("&andslope;", "\u2A58");
                _charRef.Add("&andv;", "\u2A5A");
                _charRef.Add("&ang;", "\u2220");
                _charRef.Add("&ange;", "\u29A4");
                _charRef.Add("&angle;", "\u2220");
                _charRef.Add("&angmsd;", "\u2221");
                _charRef.Add("&angmsdaa;", "\u29A8");
                _charRef.Add("&angmsdab;", "\u29A9");
                _charRef.Add("&angmsdac;", "\u29AA");
                _charRef.Add("&angmsdad;", "\u29AB");
                _charRef.Add("&angmsdae;", "\u29AC");
                _charRef.Add("&angmsdaf;", "\u29AD");
                _charRef.Add("&angmsdag;", "\u29AE");
                _charRef.Add("&angmsdah;", "\u29AF");
                _charRef.Add("&angrt;", "\u221F");
                _charRef.Add("&angrtvb;", "\u22BE");
                _charRef.Add("&angrtvbd;", "\u299D");
                _charRef.Add("&angsph;", "\u2222");
                _charRef.Add("&angst;", "\u00C5");
                _charRef.Add("&angzarr;", "\u237C");
                _charRef.Add("&Aogon;", "\u0104");
                _charRef.Add("&aogon;", "\u0105");
                _charRef.Add("&Aopf;", "\uD835\uDD38");
                _charRef.Add("&aopf;", "\uD835\uDD52");
                _charRef.Add("&ap;", "\u2248");
                _charRef.Add("&apacir;", "\u2A6F");
                _charRef.Add("&apE;", "\u2A70");
                _charRef.Add("&ape;", "\u224A");
                _charRef.Add("&apid;", "\u224B");
                _charRef.Add("&apos;", "\u0027");
                _charRef.Add("&ApplyFunction;", "\u2061");
                _charRef.Add("&approx;", "\u2248");
                _charRef.Add("&approxeq;", "\u224A");
                _charRef.Add("&Aring;", "\u00C5");
                _charRef.Add("&Aring", "\u00C5");
                _charRef.Add("&aring;", "\u00E5");
                _charRef.Add("&aring", "\u00E5");
                _charRef.Add("&Ascr;", "\uD835\uDC9C");
                _charRef.Add("&ascr;", "\uD835\uDCB6");
                _charRef.Add("&Assign;", "\u2254");
                _charRef.Add("&ast;", "\u002A");
                _charRef.Add("&asymp;", "\u2248");
                _charRef.Add("&asympeq;", "\u224D");
                _charRef.Add("&Atilde;", "\u00C3");
                _charRef.Add("&Atilde", "\u00C3");
                _charRef.Add("&atilde;", "\u00E3");
                _charRef.Add("&atilde", "\u00E3");
                _charRef.Add("&Auml;", "\u00C4");
                _charRef.Add("&Auml", "\u00C4");
                _charRef.Add("&auml;", "\u00E4");
                _charRef.Add("&auml", "\u00E4");
                _charRef.Add("&awconint;", "\u2233");
                _charRef.Add("&awint;", "\u2A11");
                _charRef.Add("&backcong;", "\u224C");
                _charRef.Add("&backepsilon;", "\u03F6");
                _charRef.Add("&backprime;", "\u2035");
                _charRef.Add("&backsim;", "\u223D");
                _charRef.Add("&backsimeq;", "\u22CD");
                _charRef.Add("&Backslash;", "\u2216");
                _charRef.Add("&Barv;", "\u2AE7");
                _charRef.Add("&barvee;", "\u22BD");
                _charRef.Add("&Barwed;", "\u2306");
                _charRef.Add("&barwed;", "\u2305");
                _charRef.Add("&barwedge;", "\u2305");
                _charRef.Add("&bbrk;", "\u23B5");
                _charRef.Add("&bbrktbrk;", "\u23B6");
                _charRef.Add("&bcong;", "\u224C");
                _charRef.Add("&Bcy;", "\u0411");
                _charRef.Add("&bcy;", "\u0431");
                _charRef.Add("&bdquo;", "\u201E");
                _charRef.Add("&becaus;", "\u2235");
                _charRef.Add("&Because;", "\u2235");
                _charRef.Add("&because;", "\u2235");
                _charRef.Add("&bemptyv;", "\u29B0");
                _charRef.Add("&bepsi;", "\u03F6");
                _charRef.Add("&bernou;", "\u212C");
                _charRef.Add("&Bernoullis;", "\u212C");
                _charRef.Add("&Beta;", "\u0392");
                _charRef.Add("&beta;", "\u03B2");
                _charRef.Add("&beth;", "\u2136");
                _charRef.Add("&between;", "\u226C");
                _charRef.Add("&Bfr;", "\uD835\uDD05");
                _charRef.Add("&bfr;", "\uD835\uDD1F");
                _charRef.Add("&bigcap;", "\u22C2");
                _charRef.Add("&bigcirc;", "\u25EF");
                _charRef.Add("&bigcup;", "\u22C3");
                _charRef.Add("&bigodot;", "\u2A00");
                _charRef.Add("&bigoplus;", "\u2A01");
                _charRef.Add("&bigotimes;", "\u2A02");
                _charRef.Add("&bigsqcup;", "\u2A06");
                _charRef.Add("&bigstar;", "\u2605");
                _charRef.Add("&bigtriangledown;", "\u25BD");
                _charRef.Add("&bigtriangleup;", "\u25B3");
                _charRef.Add("&biguplus;", "\u2A04");
                _charRef.Add("&bigvee;", "\u22C1");
                _charRef.Add("&bigwedge;", "\u22C0");
                _charRef.Add("&bkarow;", "\u290D");
                _charRef.Add("&blacklozenge;", "\u29EB");
                _charRef.Add("&blacksquare;", "\u25AA");
                _charRef.Add("&blacktriangle;", "\u25B4");
                _charRef.Add("&blacktriangledown;", "\u25BE");
                _charRef.Add("&blacktriangleleft;", "\u25C2");
                _charRef.Add("&blacktriangleright;", "\u25B8");
                _charRef.Add("&blank;", "\u2423");
                _charRef.Add("&blk12;", "\u2592");
                _charRef.Add("&blk14;", "\u2591");
                _charRef.Add("&blk34;", "\u2593");
                _charRef.Add("&block;", "\u2588");
                _charRef.Add("&bne;", "\u003D\u20E5");
                _charRef.Add("&bnequiv;", "\u2261\u20E5");
                _charRef.Add("&bNot;", "\u2AED");
                _charRef.Add("&bnot;", "\u2310");
                _charRef.Add("&Bopf;", "\uD835\uDD39");
                _charRef.Add("&bopf;", "\uD835\uDD53");
                _charRef.Add("&bot;", "\u22A5");
                _charRef.Add("&bottom;", "\u22A5");
                _charRef.Add("&bowtie;", "\u22C8");
                _charRef.Add("&boxbox;", "\u29C9");
                _charRef.Add("&boxDL;", "\u2557");
                _charRef.Add("&boxDl;", "\u2556");
                _charRef.Add("&boxdL;", "\u2555");
                _charRef.Add("&boxdl;", "\u2510");
                _charRef.Add("&boxDR;", "\u2554");
                _charRef.Add("&boxDr;", "\u2553");
                _charRef.Add("&boxdR;", "\u2552");
                _charRef.Add("&boxdr;", "\u250C");
                _charRef.Add("&boxH;", "\u2550");
                _charRef.Add("&boxh;", "\u2500");
                _charRef.Add("&boxHD;", "\u2566");
                _charRef.Add("&boxHd;", "\u2564");
                _charRef.Add("&boxhD;", "\u2565");
                _charRef.Add("&boxhd;", "\u252C");
                _charRef.Add("&boxHU;", "\u2569");
                _charRef.Add("&boxHu;", "\u2567");
                _charRef.Add("&boxhU;", "\u2568");
                _charRef.Add("&boxhu;", "\u2534");
                _charRef.Add("&boxminus;", "\u229F");
                _charRef.Add("&boxplus;", "\u229E");
                _charRef.Add("&boxtimes;", "\u22A0");
                _charRef.Add("&boxUL;", "\u255D");
                _charRef.Add("&boxUl;", "\u255C");
                _charRef.Add("&boxuL;", "\u255B");
                _charRef.Add("&boxul;", "\u2518");
                _charRef.Add("&boxUR;", "\u255A");
                _charRef.Add("&boxUr;", "\u2559");
                _charRef.Add("&boxuR;", "\u2558");
                _charRef.Add("&boxur;", "\u2514");
                _charRef.Add("&boxV;", "\u2551");
                _charRef.Add("&boxv;", "\u2502");
                _charRef.Add("&boxVH;", "\u256C");
                _charRef.Add("&boxVh;", "\u256B");
                _charRef.Add("&boxvH;", "\u256A");
                _charRef.Add("&boxvh;", "\u253C");
                _charRef.Add("&boxVL;", "\u2563");
                _charRef.Add("&boxVl;", "\u2562");
                _charRef.Add("&boxvL;", "\u2561");
                _charRef.Add("&boxvl;", "\u2524");
                _charRef.Add("&boxVR;", "\u2560");
                _charRef.Add("&boxVr;", "\u255F");
                _charRef.Add("&boxvR;", "\u255E");
                _charRef.Add("&boxvr;", "\u251C");
                _charRef.Add("&bprime;", "\u2035");
                _charRef.Add("&Breve;", "\u02D8");
                _charRef.Add("&breve;", "\u02D8");
                _charRef.Add("&brvbar;", "\u00A6");
                _charRef.Add("&brvbar", "\u00A6");
                _charRef.Add("&Bscr;", "\u212C");
                _charRef.Add("&bscr;", "\uD835\uDCB7");
                _charRef.Add("&bsemi;", "\u204F");
                _charRef.Add("&bsim;", "\u223D");
                _charRef.Add("&bsime;", "\u22CD");
                _charRef.Add("&bsol;", "\u005C");
                _charRef.Add("&bsolb;", "\u29C5");
                _charRef.Add("&bsolhsub;", "\u27C8");
                _charRef.Add("&bull;", "\u2022");
                _charRef.Add("&bullet;", "\u2022");
                _charRef.Add("&bump;", "\u224E");
                _charRef.Add("&bumpE;", "\u2AAE");
                _charRef.Add("&bumpe;", "\u224F");
                _charRef.Add("&Bumpeq;", "\u224E");
                _charRef.Add("&bumpeq;", "\u224F");
                _charRef.Add("&Cacute;", "\u0106");
                _charRef.Add("&cacute;", "\u0107");
                _charRef.Add("&Cap;", "\u22D2");
                _charRef.Add("&cap;", "\u2229");
                _charRef.Add("&capand;", "\u2A44");
                _charRef.Add("&capbrcup;", "\u2A49");
                _charRef.Add("&capcap;", "\u2A4B");
                _charRef.Add("&capcup;", "\u2A47");
                _charRef.Add("&capdot;", "\u2A40");
                _charRef.Add("&CapitalDifferentialD;", "\u2145");
                _charRef.Add("&caps;", "\u2229\uFE00");
                _charRef.Add("&caret;", "\u2041");
                _charRef.Add("&caron;", "\u02C7");
                _charRef.Add("&Cayleys;", "\u212D");
                _charRef.Add("&ccaps;", "\u2A4D");
                _charRef.Add("&Ccaron;", "\u010C");
                _charRef.Add("&ccaron;", "\u010D");
                _charRef.Add("&Ccedil;", "\u00C7");
                _charRef.Add("&Ccedil", "\u00C7");
                _charRef.Add("&ccedil;", "\u00E7");
                _charRef.Add("&ccedil", "\u00E7");
                _charRef.Add("&Ccirc;", "\u0108");
                _charRef.Add("&ccirc;", "\u0109");
                _charRef.Add("&Cconint;", "\u2230");
                _charRef.Add("&ccups;", "\u2A4C");
                _charRef.Add("&ccupssm;", "\u2A50");
                _charRef.Add("&Cdot;", "\u010A");
                _charRef.Add("&cdot;", "\u010B");
                _charRef.Add("&cedil;", "\u00B8");
                _charRef.Add("&cedil", "\u00B8");
                _charRef.Add("&Cedilla;", "\u00B8");
                _charRef.Add("&cemptyv;", "\u29B2");
                _charRef.Add("&cent;", "\u00A2");
                _charRef.Add("&cent", "\u00A2");
                _charRef.Add("&CenterDot;", "\u00B7");
                _charRef.Add("&centerdot;", "\u00B7");
                _charRef.Add("&Cfr;", "\u212D");
                _charRef.Add("&cfr;", "\uD835\uDD20");
                _charRef.Add("&CHcy;", "\u0427");
                _charRef.Add("&chcy;", "\u0447");
                _charRef.Add("&check;", "\u2713");
                _charRef.Add("&checkmark;", "\u2713");
                _charRef.Add("&Chi;", "\u03A7");
                _charRef.Add("&chi;", "\u03C7");
                _charRef.Add("&cir;", "\u25CB");
                _charRef.Add("&circ;", "\u02C6");
                _charRef.Add("&circeq;", "\u2257");
                _charRef.Add("&circlearrowleft;", "\u21BA");
                _charRef.Add("&circlearrowright;", "\u21BB");
                _charRef.Add("&circledast;", "\u229B");
                _charRef.Add("&circledcirc;", "\u229A");
                _charRef.Add("&circleddash;", "\u229D");
                _charRef.Add("&CircleDot;", "\u2299");
                _charRef.Add("&circledR;", "\u00AE");
                _charRef.Add("&circledS;", "\u24C8");
                _charRef.Add("&CircleMinus;", "\u2296");
                _charRef.Add("&CirclePlus;", "\u2295");
                _charRef.Add("&CircleTimes;", "\u2297");
                _charRef.Add("&cirE;", "\u29C3");
                _charRef.Add("&cire;", "\u2257");
                _charRef.Add("&cirfnint;", "\u2A10");
                _charRef.Add("&cirmid;", "\u2AEF");
                _charRef.Add("&cirscir;", "\u29C2");
                _charRef.Add("&ClockwiseContourIntegral;", "\u2232");
                _charRef.Add("&CloseCurlyDoubleQuote;", "\u201D");
                _charRef.Add("&CloseCurlyQuote;", "\u2019");
                _charRef.Add("&clubs;", "\u2663");
                _charRef.Add("&clubsuit;", "\u2663");
                _charRef.Add("&Colon;", "\u2237");
                _charRef.Add("&colon;", "\u003A");
                _charRef.Add("&Colone;", "\u2A74");
                _charRef.Add("&colone;", "\u2254");
                _charRef.Add("&coloneq;", "\u2254");
                _charRef.Add("&comma;", "\u002C");
                _charRef.Add("&commat;", "\u0040");
                _charRef.Add("&comp;", "\u2201");
                _charRef.Add("&compfn;", "\u2218");
                _charRef.Add("&complement;", "\u2201");
                _charRef.Add("&complexes;", "\u2102");
                _charRef.Add("&cong;", "\u2245");
                _charRef.Add("&congdot;", "\u2A6D");
                _charRef.Add("&Congruent;", "\u2261");
                _charRef.Add("&Conint;", "\u222F");
                _charRef.Add("&conint;", "\u222E");
                _charRef.Add("&ContourIntegral;", "\u222E");
                _charRef.Add("&Copf;", "\u2102");
                _charRef.Add("&copf;", "\uD835\uDD54");
                _charRef.Add("&coprod;", "\u2210");
                _charRef.Add("&Coproduct;", "\u2210");
                _charRef.Add("&COPY;", "\u00A9");
                _charRef.Add("&COPY", "\u00A9");
                _charRef.Add("&copy;", "\u00A9");
                _charRef.Add("&copy", "\u00A9");
                _charRef.Add("&copysr;", "\u2117");
                _charRef.Add("&CounterClockwiseContourIntegral;", "\u2233");
                _charRef.Add("&crarr;", "\u21B5");
                _charRef.Add("&Cross;", "\u2A2F");
                _charRef.Add("&cross;", "\u2717");
                _charRef.Add("&Cscr;", "\uD835\uDC9E");
                _charRef.Add("&cscr;", "\uD835\uDCB8");
                _charRef.Add("&csub;", "\u2ACF");
                _charRef.Add("&csube;", "\u2AD1");
                _charRef.Add("&csup;", "\u2AD0");
                _charRef.Add("&csupe;", "\u2AD2");
                _charRef.Add("&ctdot;", "\u22EF");
                _charRef.Add("&cudarrl;", "\u2938");
                _charRef.Add("&cudarrr;", "\u2935");
                _charRef.Add("&cuepr;", "\u22DE");
                _charRef.Add("&cuesc;", "\u22DF");
                _charRef.Add("&cularr;", "\u21B6");
                _charRef.Add("&cularrp;", "\u293D");
                _charRef.Add("&Cup;", "\u22D3");
                _charRef.Add("&cup;", "\u222A");
                _charRef.Add("&cupbrcap;", "\u2A48");
                _charRef.Add("&CupCap;", "\u224D");
                _charRef.Add("&cupcap;", "\u2A46");
                _charRef.Add("&cupcup;", "\u2A4A");
                _charRef.Add("&cupdot;", "\u228D");
                _charRef.Add("&cupor;", "\u2A45");
                _charRef.Add("&cups;", "\u222A\uFE00");
                _charRef.Add("&curarr;", "\u21B7");
                _charRef.Add("&curarrm;", "\u293C");
                _charRef.Add("&curlyeqprec;", "\u22DE");
                _charRef.Add("&curlyeqsucc;", "\u22DF");
                _charRef.Add("&curlyvee;", "\u22CE");
                _charRef.Add("&curlywedge;", "\u22CF");
                _charRef.Add("&curren;", "\u00A4");
                _charRef.Add("&curren", "\u00A4");
                _charRef.Add("&curvearrowleft;", "\u21B6");
                _charRef.Add("&curvearrowright;", "\u21B7");
                _charRef.Add("&cuvee;", "\u22CE");
                _charRef.Add("&cuwed;", "\u22CF");
                _charRef.Add("&cwconint;", "\u2232");
                _charRef.Add("&cwint;", "\u2231");
                _charRef.Add("&cylcty;", "\u232D");
                _charRef.Add("&Dagger;", "\u2021");
                _charRef.Add("&dagger;", "\u2020");
                _charRef.Add("&daleth;", "\u2138");
                _charRef.Add("&Darr;", "\u21A1");
                _charRef.Add("&dArr;", "\u21D3");
                _charRef.Add("&darr;", "\u2193");
                _charRef.Add("&dash;", "\u2010");
                _charRef.Add("&Dashv;", "\u2AE4");
                _charRef.Add("&dashv;", "\u22A3");
                _charRef.Add("&dbkarow;", "\u290F");
                _charRef.Add("&dblac;", "\u02DD");
                _charRef.Add("&Dcaron;", "\u010E");
                _charRef.Add("&dcaron;", "\u010F");
                _charRef.Add("&Dcy;", "\u0414");
                _charRef.Add("&dcy;", "\u0434");
                _charRef.Add("&DD;", "\u2145");
                _charRef.Add("&dd;", "\u2146");
                _charRef.Add("&ddagger;", "\u2021");
                _charRef.Add("&ddarr;", "\u21CA");
                _charRef.Add("&DDotrahd;", "\u2911");
                _charRef.Add("&ddotseq;", "\u2A77");
                _charRef.Add("&deg;", "\u00B0");
                _charRef.Add("&deg", "\u00B0");
                _charRef.Add("&Del;", "\u2207");
                _charRef.Add("&Delta;", "\u0394");
                _charRef.Add("&delta;", "\u03B4");
                _charRef.Add("&demptyv;", "\u29B1");
                _charRef.Add("&dfisht;", "\u297F");
                _charRef.Add("&Dfr;", "\uD835\uDD07");
                _charRef.Add("&dfr;", "\uD835\uDD21");
                _charRef.Add("&dHar;", "\u2965");
                _charRef.Add("&dharl;", "\u21C3");
                _charRef.Add("&dharr;", "\u21C2");
                _charRef.Add("&DiacriticalAcute;", "\u00B4");
                _charRef.Add("&DiacriticalDot;", "\u02D9");
                _charRef.Add("&DiacriticalDoubleAcute;", "\u02DD");
                _charRef.Add("&DiacriticalGrave;", "\u0060");
                _charRef.Add("&DiacriticalTilde;", "\u02DC");
                _charRef.Add("&diam;", "\u22C4");
                _charRef.Add("&Diamond;", "\u22C4");
                _charRef.Add("&diamond;", "\u22C4");
                _charRef.Add("&diamondsuit;", "\u2666");
                _charRef.Add("&diams;", "\u2666");
                _charRef.Add("&die;", "\u00A8");
                _charRef.Add("&DifferentialD;", "\u2146");
                _charRef.Add("&digamma;", "\u03DD");
                _charRef.Add("&disin;", "\u22F2");
                _charRef.Add("&div;", "\u00F7");
                _charRef.Add("&divide;", "\u00F7");
                _charRef.Add("&divide", "\u00F7");
                _charRef.Add("&divideontimes;", "\u22C7");
                _charRef.Add("&divonx;", "\u22C7");
                _charRef.Add("&DJcy;", "\u0402");
                _charRef.Add("&djcy;", "\u0452");
                _charRef.Add("&dlcorn;", "\u231E");
                _charRef.Add("&dlcrop;", "\u230D");
                _charRef.Add("&dollar;", "\u0024");
                _charRef.Add("&Dopf;", "\uD835\uDD3B");
                _charRef.Add("&dopf;", "\uD835\uDD55");
                _charRef.Add("&Dot;", "\u00A8");
                _charRef.Add("&dot;", "\u02D9");
                _charRef.Add("&DotDot;", "\u20DC");
                _charRef.Add("&doteq;", "\u2250");
                _charRef.Add("&doteqdot;", "\u2251");
                _charRef.Add("&DotEqual;", "\u2250");
                _charRef.Add("&dotminus;", "\u2238");
                _charRef.Add("&dotplus;", "\u2214");
                _charRef.Add("&dotsquare;", "\u22A1");
                _charRef.Add("&doublebarwedge;", "\u2306");
                _charRef.Add("&DoubleContourIntegral;", "\u222F");
                _charRef.Add("&DoubleDot;", "\u00A8");
                _charRef.Add("&DoubleDownArrow;", "\u21D3");
                _charRef.Add("&DoubleLeftArrow;", "\u21D0");
                _charRef.Add("&DoubleLeftRightArrow;", "\u21D4");
                _charRef.Add("&DoubleLeftTee;", "\u2AE4");
                _charRef.Add("&DoubleLongLeftArrow;", "\u27F8");
                _charRef.Add("&DoubleLongLeftRightArrow;", "\u27FA");
                _charRef.Add("&DoubleLongRightArrow;", "\u27F9");
                _charRef.Add("&DoubleRightArrow;", "\u21D2");
                _charRef.Add("&DoubleRightTee;", "\u22A8");
                _charRef.Add("&DoubleUpArrow;", "\u21D1");
                _charRef.Add("&DoubleUpDownArrow;", "\u21D5");
                _charRef.Add("&DoubleVerticalBar;", "\u2225");
                _charRef.Add("&DownArrow;", "\u2193");
                _charRef.Add("&Downarrow;", "\u21D3");
                _charRef.Add("&downarrow;", "\u2193");
                _charRef.Add("&DownArrowBar;", "\u2913");
                _charRef.Add("&DownArrowUpArrow;", "\u21F5");
                _charRef.Add("&DownBreve;", "\u0311");
                _charRef.Add("&downdownarrows;", "\u21CA");
                _charRef.Add("&downharpoonleft;", "\u21C3");
                _charRef.Add("&downharpoonright;", "\u21C2");
                _charRef.Add("&DownLeftRightVector;", "\u2950");
                _charRef.Add("&DownLeftTeeVector;", "\u295E");
                _charRef.Add("&DownLeftVector;", "\u21BD");
                _charRef.Add("&DownLeftVectorBar;", "\u2956");
                _charRef.Add("&DownRightTeeVector;", "\u295F");
                _charRef.Add("&DownRightVector;", "\u21C1");
                _charRef.Add("&DownRightVectorBar;", "\u2957");
                _charRef.Add("&DownTee;", "\u22A4");
                _charRef.Add("&DownTeeArrow;", "\u21A7");
                _charRef.Add("&drbkarow;", "\u2910");
                _charRef.Add("&drcorn;", "\u231F");
                _charRef.Add("&drcrop;", "\u230C");
                _charRef.Add("&Dscr;", "\uD835\uDC9F");
                _charRef.Add("&dscr;", "\uD835\uDCB9");
                _charRef.Add("&DScy;", "\u0405");
                _charRef.Add("&dscy;", "\u0455");
                _charRef.Add("&dsol;", "\u29F6");
                _charRef.Add("&Dstrok;", "\u0110");
                _charRef.Add("&dstrok;", "\u0111");
                _charRef.Add("&dtdot;", "\u22F1");
                _charRef.Add("&dtri;", "\u25BF");
                _charRef.Add("&dtrif;", "\u25BE");
                _charRef.Add("&duarr;", "\u21F5");
                _charRef.Add("&duhar;", "\u296F");
                _charRef.Add("&dwangle;", "\u29A6");
                _charRef.Add("&DZcy;", "\u040F");
                _charRef.Add("&dzcy;", "\u045F");
                _charRef.Add("&dzigrarr;", "\u27FF");
                _charRef.Add("&Eacute;", "\u00C9");
                _charRef.Add("&Eacute", "\u00C9");
                _charRef.Add("&eacute;", "\u00E9");
                _charRef.Add("&eacute", "\u00E9");
                _charRef.Add("&easter;", "\u2A6E");
                _charRef.Add("&Ecaron;", "\u011A");
                _charRef.Add("&ecaron;", "\u011B");
                _charRef.Add("&ecir;", "\u2256");
                _charRef.Add("&Ecirc;", "\u00CA");
                _charRef.Add("&Ecirc", "\u00CA");
                _charRef.Add("&ecirc;", "\u00EA");
                _charRef.Add("&ecirc", "\u00EA");
                _charRef.Add("&ecolon;", "\u2255");
                _charRef.Add("&Ecy;", "\u042D");
                _charRef.Add("&ecy;", "\u044D");
                _charRef.Add("&eDDot;", "\u2A77");
                _charRef.Add("&Edot;", "\u0116");
                _charRef.Add("&eDot;", "\u2251");
                _charRef.Add("&edot;", "\u0117");
                _charRef.Add("&ee;", "\u2147");
                _charRef.Add("&efDot;", "\u2252");
                _charRef.Add("&Efr;", "\uD835\uDD08");
                _charRef.Add("&efr;", "\uD835\uDD22");
                _charRef.Add("&eg;", "\u2A9A");
                _charRef.Add("&Egrave;", "\u00C8");
                _charRef.Add("&Egrave", "\u00C8");
                _charRef.Add("&egrave;", "\u00E8");
                _charRef.Add("&egrave", "\u00E8");
                _charRef.Add("&egs;", "\u2A96");
                _charRef.Add("&egsdot;", "\u2A98");
                _charRef.Add("&el;", "\u2A99");
                _charRef.Add("&Element;", "\u2208");
                _charRef.Add("&elinters;", "\u23E7");
                _charRef.Add("&ell;", "\u2113");
                _charRef.Add("&els;", "\u2A95");
                _charRef.Add("&elsdot;", "\u2A97");
                _charRef.Add("&Emacr;", "\u0112");
                _charRef.Add("&emacr;", "\u0113");
                _charRef.Add("&empty;", "\u2205");
                _charRef.Add("&emptyset;", "\u2205");
                _charRef.Add("&EmptySmallSquare;", "\u25FB");
                _charRef.Add("&emptyv;", "\u2205");
                _charRef.Add("&EmptyVerySmallSquare;", "\u25AB");
                _charRef.Add("&emsp;", "\u2003");
                _charRef.Add("&emsp13;", "\u2004");
                _charRef.Add("&emsp14;", "\u2005");
                _charRef.Add("&ENG;", "\u014A");
                _charRef.Add("&eng;", "\u014B");
                _charRef.Add("&ensp;", "\u2002");
                _charRef.Add("&Eogon;", "\u0118");
                _charRef.Add("&eogon;", "\u0119");
                _charRef.Add("&Eopf;", "\uD835\uDD3C");
                _charRef.Add("&eopf;", "\uD835\uDD56");
                _charRef.Add("&epar;", "\u22D5");
                _charRef.Add("&eparsl;", "\u29E3");
                _charRef.Add("&eplus;", "\u2A71");
                _charRef.Add("&epsi;", "\u03B5");
                _charRef.Add("&Epsilon;", "\u0395");
                _charRef.Add("&epsilon;", "\u03B5");
                _charRef.Add("&epsiv;", "\u03F5");
                _charRef.Add("&eqcirc;", "\u2256");
                _charRef.Add("&eqcolon;", "\u2255");
                _charRef.Add("&eqsim;", "\u2242");
                _charRef.Add("&eqslantgtr;", "\u2A96");
                _charRef.Add("&eqslantless;", "\u2A95");
                _charRef.Add("&Equal;", "\u2A75");
                _charRef.Add("&equals;", "\u003D");
                _charRef.Add("&EqualTilde;", "\u2242");
                _charRef.Add("&equest;", "\u225F");
                _charRef.Add("&Equilibrium;", "\u21CC");
                _charRef.Add("&equiv;", "\u2261");
                _charRef.Add("&equivDD;", "\u2A78");
                _charRef.Add("&eqvparsl;", "\u29E5");
                _charRef.Add("&erarr;", "\u2971");
                _charRef.Add("&erDot;", "\u2253");
                _charRef.Add("&Escr;", "\u2130");
                _charRef.Add("&escr;", "\u212F");
                _charRef.Add("&esdot;", "\u2250");
                _charRef.Add("&Esim;", "\u2A73");
                _charRef.Add("&esim;", "\u2242");
                _charRef.Add("&Eta;", "\u0397");
                _charRef.Add("&eta;", "\u03B7");
                _charRef.Add("&ETH;", "\u00D0");
                _charRef.Add("&ETH", "\u00D0");
                _charRef.Add("&eth;", "\u00F0");
                _charRef.Add("&eth", "\u00F0");
                _charRef.Add("&Euml;", "\u00CB");
                _charRef.Add("&Euml", "\u00CB");
                _charRef.Add("&euml;", "\u00EB");
                _charRef.Add("&euml", "\u00EB");
                _charRef.Add("&euro;", "\u20AC");
                _charRef.Add("&excl;", "\u0021");
                _charRef.Add("&exist;", "\u2203");
                _charRef.Add("&Exists;", "\u2203");
                _charRef.Add("&expectation;", "\u2130");
                _charRef.Add("&ExponentialE;", "\u2147");
                _charRef.Add("&exponentiale;", "\u2147");
                _charRef.Add("&fallingdotseq;", "\u2252");
                _charRef.Add("&Fcy;", "\u0424");
                _charRef.Add("&fcy;", "\u0444");
                _charRef.Add("&female;", "\u2640");
                _charRef.Add("&ffilig;", "\uFB03");
                _charRef.Add("&fflig;", "\uFB00");
                _charRef.Add("&ffllig;", "\uFB04");
                _charRef.Add("&Ffr;", "\uD835\uDD09");
                _charRef.Add("&ffr;", "\uD835\uDD23");
                _charRef.Add("&filig;", "\uFB01");
                _charRef.Add("&FilledSmallSquare;", "\u25FC");
                _charRef.Add("&FilledVerySmallSquare;", "\u25AA");
                _charRef.Add("&fjlig;", "\u0066\u006A");
                _charRef.Add("&flat;", "\u266D");
                _charRef.Add("&fllig;", "\uFB02");
                _charRef.Add("&fltns;", "\u25B1");
                _charRef.Add("&fnof;", "\u0192");
                _charRef.Add("&Fopf;", "\uD835\uDD3D");
                _charRef.Add("&fopf;", "\uD835\uDD57");
                _charRef.Add("&ForAll;", "\u2200");
                _charRef.Add("&forall;", "\u2200");
                _charRef.Add("&fork;", "\u22D4");
                _charRef.Add("&forkv;", "\u2AD9");
                _charRef.Add("&Fouriertrf;", "\u2131");
                _charRef.Add("&fpartint;", "\u2A0D");
                _charRef.Add("&frac12;", "\u00BD");
                _charRef.Add("&frac12", "\u00BD");
                _charRef.Add("&frac13;", "\u2153");
                _charRef.Add("&frac14;", "\u00BC");
                _charRef.Add("&frac14", "\u00BC");
                _charRef.Add("&frac15;", "\u2155");
                _charRef.Add("&frac16;", "\u2159");
                _charRef.Add("&frac18;", "\u215B");
                _charRef.Add("&frac23;", "\u2154");
                _charRef.Add("&frac25;", "\u2156");
                _charRef.Add("&frac34;", "\u00BE");
                _charRef.Add("&frac34", "\u00BE");
                _charRef.Add("&frac35;", "\u2157");
                _charRef.Add("&frac38;", "\u215C");
                _charRef.Add("&frac45;", "\u2158");
                _charRef.Add("&frac56;", "\u215A");
                _charRef.Add("&frac58;", "\u215D");
                _charRef.Add("&frac78;", "\u215E");
                _charRef.Add("&frasl;", "\u2044");
                _charRef.Add("&frown;", "\u2322");
                _charRef.Add("&Fscr;", "\u2131");
                _charRef.Add("&fscr;", "\uD835\uDCBB");
                _charRef.Add("&gacute;", "\u01F5");
                _charRef.Add("&Gamma;", "\u0393");
                _charRef.Add("&gamma;", "\u03B3");
                _charRef.Add("&Gammad;", "\u03DC");
                _charRef.Add("&gammad;", "\u03DD");
                _charRef.Add("&gap;", "\u2A86");
                _charRef.Add("&Gbreve;", "\u011E");
                _charRef.Add("&gbreve;", "\u011F");
                _charRef.Add("&Gcedil;", "\u0122");
                _charRef.Add("&Gcirc;", "\u011C");
                _charRef.Add("&gcirc;", "\u011D");
                _charRef.Add("&Gcy;", "\u0413");
                _charRef.Add("&gcy;", "\u0433");
                _charRef.Add("&Gdot;", "\u0120");
                _charRef.Add("&gdot;", "\u0121");
                _charRef.Add("&gE;", "\u2267");
                _charRef.Add("&ge;", "\u2265");
                _charRef.Add("&gEl;", "\u2A8C");
                _charRef.Add("&gel;", "\u22DB");
                _charRef.Add("&geq;", "\u2265");
                _charRef.Add("&geqq;", "\u2267");
                _charRef.Add("&geqslant;", "\u2A7E");
                _charRef.Add("&ges;", "\u2A7E");
                _charRef.Add("&gescc;", "\u2AA9");
                _charRef.Add("&gesdot;", "\u2A80");
                _charRef.Add("&gesdoto;", "\u2A82");
                _charRef.Add("&gesdotol;", "\u2A84");
                _charRef.Add("&gesl;", "\u22DB\uFE00");
                _charRef.Add("&gesles;", "\u2A94");
                _charRef.Add("&Gfr;", "\uD835\uDD0A");
                _charRef.Add("&gfr;", "\uD835\uDD24");
                _charRef.Add("&Gg;", "\u22D9");
                _charRef.Add("&gg;", "\u226B");
                _charRef.Add("&ggg;", "\u22D9");
                _charRef.Add("&gimel;", "\u2137");
                _charRef.Add("&GJcy;", "\u0403");
                _charRef.Add("&gjcy;", "\u0453");
                _charRef.Add("&gl;", "\u2277");
                _charRef.Add("&gla;", "\u2AA5");
                _charRef.Add("&glE;", "\u2A92");
                _charRef.Add("&glj;", "\u2AA4");
                _charRef.Add("&gnap;", "\u2A8A");
                _charRef.Add("&gnapprox;", "\u2A8A");
                _charRef.Add("&gnE;", "\u2269");
                _charRef.Add("&gne;", "\u2A88");
                _charRef.Add("&gneq;", "\u2A88");
                _charRef.Add("&gneqq;", "\u2269");
                _charRef.Add("&gnsim;", "\u22E7");
                _charRef.Add("&Gopf;", "\uD835\uDD3E");
                _charRef.Add("&gopf;", "\uD835\uDD58");
                _charRef.Add("&grave;", "\u0060");
                _charRef.Add("&GreaterEqual;", "\u2265");
                _charRef.Add("&GreaterEqualLess;", "\u22DB");
                _charRef.Add("&GreaterFullEqual;", "\u2267");
                _charRef.Add("&GreaterGreater;", "\u2AA2");
                _charRef.Add("&GreaterLess;", "\u2277");
                _charRef.Add("&GreaterSlantEqual;", "\u2A7E");
                _charRef.Add("&GreaterTilde;", "\u2273");
                _charRef.Add("&Gscr;", "\uD835\uDCA2");
                _charRef.Add("&gscr;", "\u210A");
                _charRef.Add("&gsim;", "\u2273");
                _charRef.Add("&gsime;", "\u2A8E");
                _charRef.Add("&gsiml;", "\u2A90");
                _charRef.Add("&GT;", "\u003E");
                _charRef.Add("&GT", "\u003E");
                _charRef.Add("&Gt;", "\u226B");
                _charRef.Add("&gt;", "\u003E");
                _charRef.Add("&gt", "\u003E");
                _charRef.Add("&gtcc;", "\u2AA7");
                _charRef.Add("&gtcir;", "\u2A7A");
                _charRef.Add("&gtdot;", "\u22D7");
                _charRef.Add("&gtlPar;", "\u2995");
                _charRef.Add("&gtquest;", "\u2A7C");
                _charRef.Add("&gtrapprox;", "\u2A86");
                _charRef.Add("&gtrarr;", "\u2978");
                _charRef.Add("&gtrdot;", "\u22D7");
                _charRef.Add("&gtreqless;", "\u22DB");
                _charRef.Add("&gtreqqless;", "\u2A8C");
                _charRef.Add("&gtrless;", "\u2277");
                _charRef.Add("&gtrsim;", "\u2273");
                _charRef.Add("&gvertneqq;", "\u2269\uFE00");
                _charRef.Add("&gvnE;", "\u2269\uFE00");
                _charRef.Add("&Hacek;", "\u02C7");
                _charRef.Add("&hairsp;", "\u200A");
                _charRef.Add("&half;", "\u00BD");
                _charRef.Add("&hamilt;", "\u210B");
                _charRef.Add("&HARDcy;", "\u042A");
                _charRef.Add("&hardcy;", "\u044A");
                _charRef.Add("&hArr;", "\u21D4");
                _charRef.Add("&harr;", "\u2194");
                _charRef.Add("&harrcir;", "\u2948");
                _charRef.Add("&harrw;", "\u21AD");
                _charRef.Add("&Hat;", "\u005E");
                _charRef.Add("&hbar;", "\u210F");
                _charRef.Add("&Hcirc;", "\u0124");
                _charRef.Add("&hcirc;", "\u0125");
                _charRef.Add("&hearts;", "\u2665");
                _charRef.Add("&heartsuit;", "\u2665");
                _charRef.Add("&hellip;", "\u2026");
                _charRef.Add("&hercon;", "\u22B9");
                _charRef.Add("&Hfr;", "\u210C");
                _charRef.Add("&hfr;", "\uD835\uDD25");
                _charRef.Add("&HilbertSpace;", "\u210B");
                _charRef.Add("&hksearow;", "\u2925");
                _charRef.Add("&hkswarow;", "\u2926");
                _charRef.Add("&hoarr;", "\u21FF");
                _charRef.Add("&homtht;", "\u223B");
                _charRef.Add("&hookleftarrow;", "\u21A9");
                _charRef.Add("&hookrightarrow;", "\u21AA");
                _charRef.Add("&Hopf;", "\u210D");
                _charRef.Add("&hopf;", "\uD835\uDD59");
                _charRef.Add("&horbar;", "\u2015");
                _charRef.Add("&HorizontalLine;", "\u2500");
                _charRef.Add("&Hscr;", "\u210B");
                _charRef.Add("&hscr;", "\uD835\uDCBD");
                _charRef.Add("&hslash;", "\u210F");
                _charRef.Add("&Hstrok;", "\u0126");
                _charRef.Add("&hstrok;", "\u0127");
                _charRef.Add("&HumpDownHump;", "\u224E");
                _charRef.Add("&HumpEqual;", "\u224F");
                _charRef.Add("&hybull;", "\u2043");
                _charRef.Add("&hyphen;", "\u2010");
                _charRef.Add("&Iacute;", "\u00CD");
                _charRef.Add("&Iacute", "\u00CD");
                _charRef.Add("&iacute;", "\u00ED");
                _charRef.Add("&iacute", "\u00ED");
                _charRef.Add("&ic;", "\u2063");
                _charRef.Add("&Icirc;", "\u00CE");
                _charRef.Add("&Icirc", "\u00CE");
                _charRef.Add("&icirc;", "\u00EE");
                _charRef.Add("&icirc", "\u00EE");
                _charRef.Add("&Icy;", "\u0418");
                _charRef.Add("&icy;", "\u0438");
                _charRef.Add("&Idot;", "\u0130");
                _charRef.Add("&IEcy;", "\u0415");
                _charRef.Add("&iecy;", "\u0435");
                _charRef.Add("&iexcl;", "\u00A1");
                _charRef.Add("&iexcl", "\u00A1");
                _charRef.Add("&iff;", "\u21D4");
                _charRef.Add("&Ifr;", "\u2111");
                _charRef.Add("&ifr;", "\uD835\uDD26");
                _charRef.Add("&Igrave;", "\u00CC");
                _charRef.Add("&Igrave", "\u00CC");
                _charRef.Add("&igrave;", "\u00EC");
                _charRef.Add("&igrave", "\u00EC");
                _charRef.Add("&ii;", "\u2148");
                _charRef.Add("&iiiint;", "\u2A0C");
                _charRef.Add("&iiint;", "\u222D");
                _charRef.Add("&iinfin;", "\u29DC");
                _charRef.Add("&iiota;", "\u2129");
                _charRef.Add("&IJlig;", "\u0132");
                _charRef.Add("&ijlig;", "\u0133");
                _charRef.Add("&Im;", "\u2111");
                _charRef.Add("&Imacr;", "\u012A");
                _charRef.Add("&imacr;", "\u012B");
                _charRef.Add("&image;", "\u2111");
                _charRef.Add("&ImaginaryI;", "\u2148");
                _charRef.Add("&imagline;", "\u2110");
                _charRef.Add("&imagpart;", "\u2111");
                _charRef.Add("&imath;", "\u0131");
                _charRef.Add("&imof;", "\u22B7");
                _charRef.Add("&imped;", "\u01B5");
                _charRef.Add("&Implies;", "\u21D2");
                _charRef.Add("&in;", "\u2208");
                _charRef.Add("&incare;", "\u2105");
                _charRef.Add("&infin;", "\u221E");
                _charRef.Add("&infintie;", "\u29DD");
                _charRef.Add("&inodot;", "\u0131");
                _charRef.Add("&Int;", "\u222C");
                _charRef.Add("&int;", "\u222B");
                _charRef.Add("&intcal;", "\u22BA");
                _charRef.Add("&integers;", "\u2124");
                _charRef.Add("&Integral;", "\u222B");
                _charRef.Add("&intercal;", "\u22BA");
                _charRef.Add("&Intersection;", "\u22C2");
                _charRef.Add("&intlarhk;", "\u2A17");
                _charRef.Add("&intprod;", "\u2A3C");
                _charRef.Add("&InvisibleComma;", "\u2063");
                _charRef.Add("&InvisibleTimes;", "\u2062");
                _charRef.Add("&IOcy;", "\u0401");
                _charRef.Add("&iocy;", "\u0451");
                _charRef.Add("&Iogon;", "\u012E");
                _charRef.Add("&iogon;", "\u012F");
                _charRef.Add("&Iopf;", "\uD835\uDD40");
                _charRef.Add("&iopf;", "\uD835\uDD5A");
                _charRef.Add("&Iota;", "\u0399");
                _charRef.Add("&iota;", "\u03B9");
                _charRef.Add("&iprod;", "\u2A3C");
                _charRef.Add("&iquest;", "\u00BF");
                _charRef.Add("&iquest", "\u00BF");
                _charRef.Add("&Iscr;", "\u2110");
                _charRef.Add("&iscr;", "\uD835\uDCBE");
                _charRef.Add("&isin;", "\u2208");
                _charRef.Add("&isindot;", "\u22F5");
                _charRef.Add("&isinE;", "\u22F9");
                _charRef.Add("&isins;", "\u22F4");
                _charRef.Add("&isinsv;", "\u22F3");
                _charRef.Add("&isinv;", "\u2208");
                _charRef.Add("&it;", "\u2062");
                _charRef.Add("&Itilde;", "\u0128");
                _charRef.Add("&itilde;", "\u0129");
                _charRef.Add("&Iukcy;", "\u0406");
                _charRef.Add("&iukcy;", "\u0456");
                _charRef.Add("&Iuml;", "\u00CF");
                _charRef.Add("&Iuml", "\u00CF");
                _charRef.Add("&iuml;", "\u00EF");
                _charRef.Add("&iuml", "\u00EF");
                _charRef.Add("&Jcirc;", "\u0134");
                _charRef.Add("&jcirc;", "\u0135");
                _charRef.Add("&Jcy;", "\u0419");
                _charRef.Add("&jcy;", "\u0439");
                _charRef.Add("&Jfr;", "\uD835\uDD0D");
                _charRef.Add("&jfr;", "\uD835\uDD27");
                _charRef.Add("&jmath;", "\u0237");
                _charRef.Add("&Jopf;", "\uD835\uDD41");
                _charRef.Add("&jopf;", "\uD835\uDD5B");
                _charRef.Add("&Jscr;", "\uD835\uDCA5");
                _charRef.Add("&jscr;", "\uD835\uDCBF");
                _charRef.Add("&Jsercy;", "\u0408");
                _charRef.Add("&jsercy;", "\u0458");
                _charRef.Add("&Jukcy;", "\u0404");
                _charRef.Add("&jukcy;", "\u0454");
                _charRef.Add("&Kappa;", "\u039A");
                _charRef.Add("&kappa;", "\u03BA");
                _charRef.Add("&kappav;", "\u03F0");
                _charRef.Add("&Kcedil;", "\u0136");
                _charRef.Add("&kcedil;", "\u0137");
                _charRef.Add("&Kcy;", "\u041A");
                _charRef.Add("&kcy;", "\u043A");
                _charRef.Add("&Kfr;", "\uD835\uDD0E");
                _charRef.Add("&kfr;", "\uD835\uDD28");
                _charRef.Add("&kgreen;", "\u0138");
                _charRef.Add("&KHcy;", "\u0425");
                _charRef.Add("&khcy;", "\u0445");
                _charRef.Add("&KJcy;", "\u040C");
                _charRef.Add("&kjcy;", "\u045C");
                _charRef.Add("&Kopf;", "\uD835\uDD42");
                _charRef.Add("&kopf;", "\uD835\uDD5C");
                _charRef.Add("&Kscr;", "\uD835\uDCA6");
                _charRef.Add("&kscr;", "\uD835\uDCC0");
                _charRef.Add("&lAarr;", "\u21DA");
                _charRef.Add("&Lacute;", "\u0139");
                _charRef.Add("&lacute;", "\u013A");
                _charRef.Add("&laemptyv;", "\u29B4");
                _charRef.Add("&lagran;", "\u2112");
                _charRef.Add("&Lambda;", "\u039B");
                _charRef.Add("&lambda;", "\u03BB");
                _charRef.Add("&Lang;", "\u27EA");
                _charRef.Add("&lang;", "\u27E8");
                _charRef.Add("&langd;", "\u2991");
                _charRef.Add("&langle;", "\u27E8");
                _charRef.Add("&lap;", "\u2A85");
                _charRef.Add("&Laplacetrf;", "\u2112");
                _charRef.Add("&laquo;", "\u00AB");
                _charRef.Add("&laquo", "\u00AB");
                _charRef.Add("&Larr;", "\u219E");
                _charRef.Add("&lArr;", "\u21D0");
                _charRef.Add("&larr;", "\u2190");
                _charRef.Add("&larrb;", "\u21E4");
                _charRef.Add("&larrbfs;", "\u291F");
                _charRef.Add("&larrfs;", "\u291D");
                _charRef.Add("&larrhk;", "\u21A9");
                _charRef.Add("&larrlp;", "\u21AB");
                _charRef.Add("&larrpl;", "\u2939");
                _charRef.Add("&larrsim;", "\u2973");
                _charRef.Add("&larrtl;", "\u21A2");
                _charRef.Add("&lat;", "\u2AAB");
                _charRef.Add("&lAtail;", "\u291B");
                _charRef.Add("&latail;", "\u2919");
                _charRef.Add("&late;", "\u2AAD");
                _charRef.Add("&lates;", "\u2AAD\uFE00");
                _charRef.Add("&lBarr;", "\u290E");
                _charRef.Add("&lbarr;", "\u290C");
                _charRef.Add("&lbbrk;", "\u2772");
                _charRef.Add("&lbrace;", "\u007B");
                _charRef.Add("&lbrack;", "\u005B");
                _charRef.Add("&lbrke;", "\u298B");
                _charRef.Add("&lbrksld;", "\u298F");
                _charRef.Add("&lbrkslu;", "\u298D");
                _charRef.Add("&Lcaron;", "\u013D");
                _charRef.Add("&lcaron;", "\u013E");
                _charRef.Add("&Lcedil;", "\u013B");
                _charRef.Add("&lcedil;", "\u013C");
                _charRef.Add("&lceil;", "\u2308");
                _charRef.Add("&lcub;", "\u007B");
                _charRef.Add("&Lcy;", "\u041B");
                _charRef.Add("&lcy;", "\u043B");
                _charRef.Add("&ldca;", "\u2936");
                _charRef.Add("&ldquo;", "\u201C");
                _charRef.Add("&ldquor;", "\u201E");
                _charRef.Add("&ldrdhar;", "\u2967");
                _charRef.Add("&ldrushar;", "\u294B");
                _charRef.Add("&ldsh;", "\u21B2");
                _charRef.Add("&lE;", "\u2266");
                _charRef.Add("&le;", "\u2264");
                _charRef.Add("&LeftAngleBracket;", "\u27E8");
                _charRef.Add("&LeftArrow;", "\u2190");
                _charRef.Add("&Leftarrow;", "\u21D0");
                _charRef.Add("&leftarrow;", "\u2190");
                _charRef.Add("&LeftArrowBar;", "\u21E4");
                _charRef.Add("&LeftArrowRightArrow;", "\u21C6");
                _charRef.Add("&leftarrowtail;", "\u21A2");
                _charRef.Add("&LeftCeiling;", "\u2308");
                _charRef.Add("&LeftDoubleBracket;", "\u27E6");
                _charRef.Add("&LeftDownTeeVector;", "\u2961");
                _charRef.Add("&LeftDownVector;", "\u21C3");
                _charRef.Add("&LeftDownVectorBar;", "\u2959");
                _charRef.Add("&LeftFloor;", "\u230A");
                _charRef.Add("&leftharpoondown;", "\u21BD");
                _charRef.Add("&leftharpoonup;", "\u21BC");
                _charRef.Add("&leftleftarrows;", "\u21C7");
                _charRef.Add("&LeftRightArrow;", "\u2194");
                _charRef.Add("&Leftrightarrow;", "\u21D4");
                _charRef.Add("&leftrightarrow;", "\u2194");
                _charRef.Add("&leftrightarrows;", "\u21C6");
                _charRef.Add("&leftrightharpoons;", "\u21CB");
                _charRef.Add("&leftrightsquigarrow;", "\u21AD");
                _charRef.Add("&LeftRightVector;", "\u294E");
                _charRef.Add("&LeftTee;", "\u22A3");
                _charRef.Add("&LeftTeeArrow;", "\u21A4");
                _charRef.Add("&LeftTeeVector;", "\u295A");
                _charRef.Add("&leftthreetimes;", "\u22CB");
                _charRef.Add("&LeftTriangle;", "\u22B2");
                _charRef.Add("&LeftTriangleBar;", "\u29CF");
                _charRef.Add("&LeftTriangleEqual;", "\u22B4");
                _charRef.Add("&LeftUpDownVector;", "\u2951");
                _charRef.Add("&LeftUpTeeVector;", "\u2960");
                _charRef.Add("&LeftUpVector;", "\u21BF");
                _charRef.Add("&LeftUpVectorBar;", "\u2958");
                _charRef.Add("&LeftVector;", "\u21BC");
                _charRef.Add("&LeftVectorBar;", "\u2952");
                _charRef.Add("&lEg;", "\u2A8B");
                _charRef.Add("&leg;", "\u22DA");
                _charRef.Add("&leq;", "\u2264");
                _charRef.Add("&leqq;", "\u2266");
                _charRef.Add("&leqslant;", "\u2A7D");
                _charRef.Add("&les;", "\u2A7D");
                _charRef.Add("&lescc;", "\u2AA8");
                _charRef.Add("&lesdot;", "\u2A7F");
                _charRef.Add("&lesdoto;", "\u2A81");
                _charRef.Add("&lesdotor;", "\u2A83");
                _charRef.Add("&lesg;", "\u22DA\uFE00");
                _charRef.Add("&lesges;", "\u2A93");
                _charRef.Add("&lessapprox;", "\u2A85");
                _charRef.Add("&lessdot;", "\u22D6");
                _charRef.Add("&lesseqgtr;", "\u22DA");
                _charRef.Add("&lesseqqgtr;", "\u2A8B");
                _charRef.Add("&LessEqualGreater;", "\u22DA");
                _charRef.Add("&LessFullEqual;", "\u2266");
                _charRef.Add("&LessGreater;", "\u2276");
                _charRef.Add("&lessgtr;", "\u2276");
                _charRef.Add("&LessLess;", "\u2AA1");
                _charRef.Add("&lesssim;", "\u2272");
                _charRef.Add("&LessSlantEqual;", "\u2A7D");
                _charRef.Add("&LessTilde;", "\u2272");
                _charRef.Add("&lfisht;", "\u297C");
                _charRef.Add("&lfloor;", "\u230A");
                _charRef.Add("&Lfr;", "\uD835\uDD0F");
                _charRef.Add("&lfr;", "\uD835\uDD29");
                _charRef.Add("&lg;", "\u2276");
                _charRef.Add("&lgE;", "\u2A91");
                _charRef.Add("&lHar;", "\u2962");
                _charRef.Add("&lhard;", "\u21BD");
                _charRef.Add("&lharu;", "\u21BC");
                _charRef.Add("&lharul;", "\u296A");
                _charRef.Add("&lhblk;", "\u2584");
                _charRef.Add("&LJcy;", "\u0409");
                _charRef.Add("&ljcy;", "\u0459");
                _charRef.Add("&Ll;", "\u22D8");
                _charRef.Add("&ll;", "\u226A");
                _charRef.Add("&llarr;", "\u21C7");
                _charRef.Add("&llcorner;", "\u231E");
                _charRef.Add("&Lleftarrow;", "\u21DA");
                _charRef.Add("&llhard;", "\u296B");
                _charRef.Add("&lltri;", "\u25FA");
                _charRef.Add("&Lmidot;", "\u013F");
                _charRef.Add("&lmidot;", "\u0140");
                _charRef.Add("&lmoust;", "\u23B0");
                _charRef.Add("&lmoustache;", "\u23B0");
                _charRef.Add("&lnap;", "\u2A89");
                _charRef.Add("&lnapprox;", "\u2A89");
                _charRef.Add("&lnE;", "\u2268");
                _charRef.Add("&lne;", "\u2A87");
                _charRef.Add("&lneq;", "\u2A87");
                _charRef.Add("&lneqq;", "\u2268");
                _charRef.Add("&lnsim;", "\u22E6");
                _charRef.Add("&loang;", "\u27EC");
                _charRef.Add("&loarr;", "\u21FD");
                _charRef.Add("&lobrk;", "\u27E6");
                _charRef.Add("&LongLeftArrow;", "\u27F5");
                _charRef.Add("&Longleftarrow;", "\u27F8");
                _charRef.Add("&longleftarrow;", "\u27F5");
                _charRef.Add("&LongLeftRightArrow;", "\u27F7");
                _charRef.Add("&Longleftrightarrow;", "\u27FA");
                _charRef.Add("&longleftrightarrow;", "\u27F7");
                _charRef.Add("&longmapsto;", "\u27FC");
                _charRef.Add("&LongRightArrow;", "\u27F6");
                _charRef.Add("&Longrightarrow;", "\u27F9");
                _charRef.Add("&longrightarrow;", "\u27F6");
                _charRef.Add("&looparrowleft;", "\u21AB");
                _charRef.Add("&looparrowright;", "\u21AC");
                _charRef.Add("&lopar;", "\u2985");
                _charRef.Add("&Lopf;", "\uD835\uDD43");
                _charRef.Add("&lopf;", "\uD835\uDD5D");
                _charRef.Add("&loplus;", "\u2A2D");
                _charRef.Add("&lotimes;", "\u2A34");
                _charRef.Add("&lowast;", "\u2217");
                _charRef.Add("&lowbar;", "\u005F");
                _charRef.Add("&LowerLeftArrow;", "\u2199");
                _charRef.Add("&LowerRightArrow;", "\u2198");
                _charRef.Add("&loz;", "\u25CA");
                _charRef.Add("&lozenge;", "\u25CA");
                _charRef.Add("&lozf;", "\u29EB");
                _charRef.Add("&lpar;", "\u0028");
                _charRef.Add("&lparlt;", "\u2993");
                _charRef.Add("&lrarr;", "\u21C6");
                _charRef.Add("&lrcorner;", "\u231F");
                _charRef.Add("&lrhar;", "\u21CB");
                _charRef.Add("&lrhard;", "\u296D");
                _charRef.Add("&lrm;", "\u200E");
                _charRef.Add("&lrtri;", "\u22BF");
                _charRef.Add("&lsaquo;", "\u2039");
                _charRef.Add("&Lscr;", "\u2112");
                _charRef.Add("&lscr;", "\uD835\uDCC1");
                _charRef.Add("&Lsh;", "\u21B0");
                _charRef.Add("&lsh;", "\u21B0");
                _charRef.Add("&lsim;", "\u2272");
                _charRef.Add("&lsime;", "\u2A8D");
                _charRef.Add("&lsimg;", "\u2A8F");
                _charRef.Add("&lsqb;", "\u005B");
                _charRef.Add("&lsquo;", "\u2018");
                _charRef.Add("&lsquor;", "\u201A");
                _charRef.Add("&Lstrok;", "\u0141");
                _charRef.Add("&lstrok;", "\u0142");
                _charRef.Add("&LT;", "\u003C");
                _charRef.Add("&LT", "\u003C");
                _charRef.Add("&Lt;", "\u226A");
                _charRef.Add("&lt;", "\u003C");
                _charRef.Add("&lt", "\u003C");
                _charRef.Add("&ltcc;", "\u2AA6");
                _charRef.Add("&ltcir;", "\u2A79");
                _charRef.Add("&ltdot;", "\u22D6");
                _charRef.Add("&lthree;", "\u22CB");
                _charRef.Add("&ltimes;", "\u22C9");
                _charRef.Add("&ltlarr;", "\u2976");
                _charRef.Add("&ltquest;", "\u2A7B");
                _charRef.Add("&ltri;", "\u25C3");
                _charRef.Add("&ltrie;", "\u22B4");
                _charRef.Add("&ltrif;", "\u25C2");
                _charRef.Add("&ltrPar;", "\u2996");
                _charRef.Add("&lurdshar;", "\u294A");
                _charRef.Add("&luruhar;", "\u2966");
                _charRef.Add("&lvertneqq;", "\u2268\uFE00");
                _charRef.Add("&lvnE;", "\u2268\uFE00");
                _charRef.Add("&macr;", "\u00AF");
                _charRef.Add("&macr", "\u00AF");
                _charRef.Add("&male;", "\u2642");
                _charRef.Add("&malt;", "\u2720");
                _charRef.Add("&maltese;", "\u2720");
                _charRef.Add("&Map;", "\u2905");
                _charRef.Add("&map;", "\u21A6");
                _charRef.Add("&mapsto;", "\u21A6");
                _charRef.Add("&mapstodown;", "\u21A7");
                _charRef.Add("&mapstoleft;", "\u21A4");
                _charRef.Add("&mapstoup;", "\u21A5");
                _charRef.Add("&marker;", "\u25AE");
                _charRef.Add("&mcomma;", "\u2A29");
                _charRef.Add("&Mcy;", "\u041C");
                _charRef.Add("&mcy;", "\u043C");
                _charRef.Add("&mdash;", "\u2014");
                _charRef.Add("&mDDot;", "\u223A");
                _charRef.Add("&measuredangle;", "\u2221");
                _charRef.Add("&MediumSpace;", "\u205F");
                _charRef.Add("&Mellintrf;", "\u2133");
                _charRef.Add("&Mfr;", "\uD835\uDD10");
                _charRef.Add("&mfr;", "\uD835\uDD2A");
                _charRef.Add("&mho;", "\u2127");
                _charRef.Add("&micro;", "\u00B5");
                _charRef.Add("&micro", "\u00B5");
                _charRef.Add("&mid;", "\u2223");
                _charRef.Add("&midast;", "\u002A");
                _charRef.Add("&midcir;", "\u2AF0");
                _charRef.Add("&middot;", "\u00B7");
                _charRef.Add("&middot", "\u00B7");
                _charRef.Add("&minus;", "\u2212");
                _charRef.Add("&minusb;", "\u229F");
                _charRef.Add("&minusd;", "\u2238");
                _charRef.Add("&minusdu;", "\u2A2A");
                _charRef.Add("&MinusPlus;", "\u2213");
                _charRef.Add("&mlcp;", "\u2ADB");
                _charRef.Add("&mldr;", "\u2026");
                _charRef.Add("&mnplus;", "\u2213");
                _charRef.Add("&models;", "\u22A7");
                _charRef.Add("&Mopf;", "\uD835\uDD44");
                _charRef.Add("&mopf;", "\uD835\uDD5E");
                _charRef.Add("&mp;", "\u2213");
                _charRef.Add("&Mscr;", "\u2133");
                _charRef.Add("&mscr;", "\uD835\uDCC2");
                _charRef.Add("&mstpos;", "\u223E");
                _charRef.Add("&Mu;", "\u039C");
                _charRef.Add("&mu;", "\u03BC");
                _charRef.Add("&multimap;", "\u22B8");
                _charRef.Add("&mumap;", "\u22B8");
                _charRef.Add("&nabla;", "\u2207");
                _charRef.Add("&Nacute;", "\u0143");
                _charRef.Add("&nacute;", "\u0144");
                _charRef.Add("&nang;", "\u2220\u20D2");
                _charRef.Add("&nap;", "\u2249");
                _charRef.Add("&napE;", "\u2A70\u0338");
                _charRef.Add("&napid;", "\u224B\u0338");
                _charRef.Add("&napos;", "\u0149");
                _charRef.Add("&napprox;", "\u2249");
                _charRef.Add("&natur;", "\u266E");
                _charRef.Add("&natural;", "\u266E");
                _charRef.Add("&naturals;", "\u2115");
                _charRef.Add("&nbsp;", "\u00A0");
                _charRef.Add("&nbsp", "\u00A0");
                _charRef.Add("&nbump;", "\u224E\u0338");
                _charRef.Add("&nbumpe;", "\u224F\u0338");
                _charRef.Add("&ncap;", "\u2A43");
                _charRef.Add("&Ncaron;", "\u0147");
                _charRef.Add("&ncaron;", "\u0148");
                _charRef.Add("&Ncedil;", "\u0145");
                _charRef.Add("&ncedil;", "\u0146");
                _charRef.Add("&ncong;", "\u2247");
                _charRef.Add("&ncongdot;", "\u2A6D\u0338");
                _charRef.Add("&ncup;", "\u2A42");
                _charRef.Add("&Ncy;", "\u041D");
                _charRef.Add("&ncy;", "\u043D");
                _charRef.Add("&ndash;", "\u2013");
                _charRef.Add("&ne;", "\u2260");
                _charRef.Add("&nearhk;", "\u2924");
                _charRef.Add("&neArr;", "\u21D7");
                _charRef.Add("&nearr;", "\u2197");
                _charRef.Add("&nearrow;", "\u2197");
                _charRef.Add("&nedot;", "\u2250\u0338");
                _charRef.Add("&NegativeMediumSpace;", "\u200B");
                _charRef.Add("&NegativeThickSpace;", "\u200B");
                _charRef.Add("&NegativeThinSpace;", "\u200B");
                _charRef.Add("&NegativeVeryThinSpace;", "\u200B");
                _charRef.Add("&nequiv;", "\u2262");
                _charRef.Add("&nesear;", "\u2928");
                _charRef.Add("&nesim;", "\u2242\u0338");
                _charRef.Add("&NestedGreaterGreater;", "\u226B");
                _charRef.Add("&NestedLessLess;", "\u226A");
                _charRef.Add("&NewLine;", "\u000A");
                _charRef.Add("&nexist;", "\u2204");
                _charRef.Add("&nexists;", "\u2204");
                _charRef.Add("&Nfr;", "\uD835\uDD11");
                _charRef.Add("&nfr;", "\uD835\uDD2B");
                _charRef.Add("&ngE;", "\u2267\u0338");
                _charRef.Add("&nge;", "\u2271");
                _charRef.Add("&ngeq;", "\u2271");
                _charRef.Add("&ngeqq;", "\u2267\u0338");
                _charRef.Add("&ngeqslant;", "\u2A7E\u0338");
                _charRef.Add("&nges;", "\u2A7E\u0338");
                _charRef.Add("&nGg;", "\u22D9\u0338");
                _charRef.Add("&ngsim;", "\u2275");
                _charRef.Add("&nGt;", "\u226B\u20D2");
                _charRef.Add("&ngt;", "\u226F");
                _charRef.Add("&ngtr;", "\u226F");
                _charRef.Add("&nGtv;", "\u226B\u0338");
                _charRef.Add("&nhArr;", "\u21CE");
                _charRef.Add("&nharr;", "\u21AE");
                _charRef.Add("&nhpar;", "\u2AF2");
                _charRef.Add("&ni;", "\u220B");
                _charRef.Add("&nis;", "\u22FC");
                _charRef.Add("&nisd;", "\u22FA");
                _charRef.Add("&niv;", "\u220B");
                _charRef.Add("&NJcy;", "\u040A");
                _charRef.Add("&njcy;", "\u045A");
                _charRef.Add("&nlArr;", "\u21CD");
                _charRef.Add("&nlarr;", "\u219A");
                _charRef.Add("&nldr;", "\u2025");
                _charRef.Add("&nlE;", "\u2266\u0338");
                _charRef.Add("&nle;", "\u2270");
                _charRef.Add("&nLeftarrow;", "\u21CD");
                _charRef.Add("&nleftarrow;", "\u219A");
                _charRef.Add("&nLeftrightarrow;", "\u21CE");
                _charRef.Add("&nleftrightarrow;", "\u21AE");
                _charRef.Add("&nleq;", "\u2270");
                _charRef.Add("&nleqq;", "\u2266\u0338");
                _charRef.Add("&nleqslant;", "\u2A7D\u0338");
                _charRef.Add("&nles;", "\u2A7D\u0338");
                _charRef.Add("&nless;", "\u226E");
                _charRef.Add("&nLl;", "\u22D8\u0338");
                _charRef.Add("&nlsim;", "\u2274");
                _charRef.Add("&nLt;", "\u226A\u20D2");
                _charRef.Add("&nlt;", "\u226E");
                _charRef.Add("&nltri;", "\u22EA");
                _charRef.Add("&nltrie;", "\u22EC");
                _charRef.Add("&nLtv;", "\u226A\u0338");
                _charRef.Add("&nmid;", "\u2224");
                _charRef.Add("&NoBreak;", "\u2060");
                _charRef.Add("&NonBreakingSpace;", "\u00A0");
                _charRef.Add("&Nopf;", "\u2115");
                _charRef.Add("&nopf;", "\uD835\uDD5F");
                _charRef.Add("&Not;", "\u2AEC");
                _charRef.Add("&not;", "\u00AC");
                _charRef.Add("&not", "\u00AC");
                _charRef.Add("&NotCongruent;", "\u2262");
                _charRef.Add("&NotCupCap;", "\u226D");
                _charRef.Add("&NotDoubleVerticalBar;", "\u2226");
                _charRef.Add("&NotElement;", "\u2209");
                _charRef.Add("&NotEqual;", "\u2260");
                _charRef.Add("&NotEqualTilde;", "\u2242\u0338");
                _charRef.Add("&NotExists;", "\u2204");
                _charRef.Add("&NotGreater;", "\u226F");
                _charRef.Add("&NotGreaterEqual;", "\u2271");
                _charRef.Add("&NotGreaterFullEqual;", "\u2267\u0338");
                _charRef.Add("&NotGreaterGreater;", "\u226B\u0338");
                _charRef.Add("&NotGreaterLess;", "\u2279");
                _charRef.Add("&NotGreaterSlantEqual;", "\u2A7E\u0338");
                _charRef.Add("&NotGreaterTilde;", "\u2275");
                _charRef.Add("&NotHumpDownHump;", "\u224E\u0338");
                _charRef.Add("&NotHumpEqual;", "\u224F\u0338");
                _charRef.Add("&notin;", "\u2209");
                _charRef.Add("&notindot;", "\u22F5\u0338");
                _charRef.Add("&notinE;", "\u22F9\u0338");
                _charRef.Add("&notinva;", "\u2209");
                _charRef.Add("&notinvb;", "\u22F7");
                _charRef.Add("&notinvc;", "\u22F6");
                _charRef.Add("&NotLeftTriangle;", "\u22EA");
                _charRef.Add("&NotLeftTriangleBar;", "\u29CF\u0338");
                _charRef.Add("&NotLeftTriangleEqual;", "\u22EC");
                _charRef.Add("&NotLess;", "\u226E");
                _charRef.Add("&NotLessEqual;", "\u2270");
                _charRef.Add("&NotLessGreater;", "\u2278");
                _charRef.Add("&NotLessLess;", "\u226A\u0338");
                _charRef.Add("&NotLessSlantEqual;", "\u2A7D\u0338");
                _charRef.Add("&NotLessTilde;", "\u2274");
                _charRef.Add("&NotNestedGreaterGreater;", "\u2AA2\u0338");
                _charRef.Add("&NotNestedLessLess;", "\u2AA1\u0338");
                _charRef.Add("&notni;", "\u220C");
                _charRef.Add("&notniva;", "\u220C");
                _charRef.Add("&notnivb;", "\u22FE");
                _charRef.Add("&notnivc;", "\u22FD");
                _charRef.Add("&NotPrecedes;", "\u2280");
                _charRef.Add("&NotPrecedesEqual;", "\u2AAF\u0338");
                _charRef.Add("&NotPrecedesSlantEqual;", "\u22E0");
                _charRef.Add("&NotReverseElement;", "\u220C");
                _charRef.Add("&NotRightTriangle;", "\u22EB");
                _charRef.Add("&NotRightTriangleBar;", "\u29D0\u0338");
                _charRef.Add("&NotRightTriangleEqual;", "\u22ED");
                _charRef.Add("&NotSquareSubset;", "\u228F\u0338");
                _charRef.Add("&NotSquareSubsetEqual;", "\u22E2");
                _charRef.Add("&NotSquareSuperset;", "\u2290\u0338");
                _charRef.Add("&NotSquareSupersetEqual;", "\u22E3");
                _charRef.Add("&NotSubset;", "\u2282\u20D2");
                _charRef.Add("&NotSubsetEqual;", "\u2288");
                _charRef.Add("&NotSucceeds;", "\u2281");
                _charRef.Add("&NotSucceedsEqual;", "\u2AB0\u0338");
                _charRef.Add("&NotSucceedsSlantEqual;", "\u22E1");
                _charRef.Add("&NotSucceedsTilde;", "\u227F\u0338");
                _charRef.Add("&NotSuperset;", "\u2283\u20D2");
                _charRef.Add("&NotSupersetEqual;", "\u2289");
                _charRef.Add("&NotTilde;", "\u2241");
                _charRef.Add("&NotTildeEqual;", "\u2244");
                _charRef.Add("&NotTildeFullEqual;", "\u2247");
                _charRef.Add("&NotTildeTilde;", "\u2249");
                _charRef.Add("&NotVerticalBar;", "\u2224");
                _charRef.Add("&npar;", "\u2226");
                _charRef.Add("&nparallel;", "\u2226");
                _charRef.Add("&nparsl;", "\u2AFD\u20E5");
                _charRef.Add("&npart;", "\u2202\u0338");
                _charRef.Add("&npolint;", "\u2A14");
                _charRef.Add("&npr;", "\u2280");
                _charRef.Add("&nprcue;", "\u22E0");
                _charRef.Add("&npre;", "\u2AAF\u0338");
                _charRef.Add("&nprec;", "\u2280");
                _charRef.Add("&npreceq;", "\u2AAF\u0338");
                _charRef.Add("&nrArr;", "\u21CF");
                _charRef.Add("&nrarr;", "\u219B");
                _charRef.Add("&nrarrc;", "\u2933\u0338");
                _charRef.Add("&nrarrw;", "\u219D\u0338");
                _charRef.Add("&nRightarrow;", "\u21CF");
                _charRef.Add("&nrightarrow;", "\u219B");
                _charRef.Add("&nrtri;", "\u22EB");
                _charRef.Add("&nrtrie;", "\u22ED");
                _charRef.Add("&nsc;", "\u2281");
                _charRef.Add("&nsccue;", "\u22E1");
                _charRef.Add("&nsce;", "\u2AB0\u0338");
                _charRef.Add("&Nscr;", "\uD835\uDCA9");
                _charRef.Add("&nscr;", "\uD835\uDCC3");
                _charRef.Add("&nshortmid;", "\u2224");
                _charRef.Add("&nshortparallel;", "\u2226");
                _charRef.Add("&nsim;", "\u2241");
                _charRef.Add("&nsime;", "\u2244");
                _charRef.Add("&nsimeq;", "\u2244");
                _charRef.Add("&nsmid;", "\u2224");
                _charRef.Add("&nspar;", "\u2226");
                _charRef.Add("&nsqsube;", "\u22E2");
                _charRef.Add("&nsqsupe;", "\u22E3");
                _charRef.Add("&nsub;", "\u2284");
                _charRef.Add("&nsubE;", "\u2AC5\u0338");
                _charRef.Add("&nsube;", "\u2288");
                _charRef.Add("&nsubset;", "\u2282\u20D2");
                _charRef.Add("&nsubseteq;", "\u2288");
                _charRef.Add("&nsubseteqq;", "\u2AC5\u0338");
                _charRef.Add("&nsucc;", "\u2281");
                _charRef.Add("&nsucceq;", "\u2AB0\u0338");
                _charRef.Add("&nsup;", "\u2285");
                _charRef.Add("&nsupE;", "\u2AC6\u0338");
                _charRef.Add("&nsupe;", "\u2289");
                _charRef.Add("&nsupset;", "\u2283\u20D2");
                _charRef.Add("&nsupseteq;", "\u2289");
                _charRef.Add("&nsupseteqq;", "\u2AC6\u0338");
                _charRef.Add("&ntgl;", "\u2279");
                _charRef.Add("&Ntilde;", "\u00D1");
                _charRef.Add("&Ntilde", "\u00D1");
                _charRef.Add("&ntilde;", "\u00F1");
                _charRef.Add("&ntilde", "\u00F1");
                _charRef.Add("&ntlg;", "\u2278");
                _charRef.Add("&ntriangleleft;", "\u22EA");
                _charRef.Add("&ntrianglelefteq;", "\u22EC");
                _charRef.Add("&ntriangleright;", "\u22EB");
                _charRef.Add("&ntrianglerighteq;", "\u22ED");
                _charRef.Add("&Nu;", "\u039D");
                _charRef.Add("&nu;", "\u03BD");
                _charRef.Add("&num;", "\u0023");
                _charRef.Add("&numero;", "\u2116");
                _charRef.Add("&numsp;", "\u2007");
                _charRef.Add("&nvap;", "\u224D\u20D2");
                _charRef.Add("&nVDash;", "\u22AF");
                _charRef.Add("&nVdash;", "\u22AE");
                _charRef.Add("&nvDash;", "\u22AD");
                _charRef.Add("&nvdash;", "\u22AC");
                _charRef.Add("&nvge;", "\u2265\u20D2");
                _charRef.Add("&nvgt;", "\u003E\u20D2");
                _charRef.Add("&nvHarr;", "\u2904");
                _charRef.Add("&nvinfin;", "\u29DE");
                _charRef.Add("&nvlArr;", "\u2902");
                _charRef.Add("&nvle;", "\u2264\u20D2");
                _charRef.Add("&nvlt;", "\u003C\u20D2");
                _charRef.Add("&nvltrie;", "\u22B4\u20D2");
                _charRef.Add("&nvrArr;", "\u2903");
                _charRef.Add("&nvrtrie;", "\u22B5\u20D2");
                _charRef.Add("&nvsim;", "\u223C\u20D2");
                _charRef.Add("&nwarhk;", "\u2923");
                _charRef.Add("&nwArr;", "\u21D6");
                _charRef.Add("&nwarr;", "\u2196");
                _charRef.Add("&nwarrow;", "\u2196");
                _charRef.Add("&nwnear;", "\u2927");
                _charRef.Add("&Oacute;", "\u00D3");
                _charRef.Add("&Oacute", "\u00D3");
                _charRef.Add("&oacute;", "\u00F3");
                _charRef.Add("&oacute", "\u00F3");
                _charRef.Add("&oast;", "\u229B");
                _charRef.Add("&ocir;", "\u229A");
                _charRef.Add("&Ocirc;", "\u00D4");
                _charRef.Add("&Ocirc", "\u00D4");
                _charRef.Add("&ocirc;", "\u00F4");
                _charRef.Add("&ocirc", "\u00F4");
                _charRef.Add("&Ocy;", "\u041E");
                _charRef.Add("&ocy;", "\u043E");
                _charRef.Add("&odash;", "\u229D");
                _charRef.Add("&Odblac;", "\u0150");
                _charRef.Add("&odblac;", "\u0151");
                _charRef.Add("&odiv;", "\u2A38");
                _charRef.Add("&odot;", "\u2299");
                _charRef.Add("&odsold;", "\u29BC");
                _charRef.Add("&OElig;", "\u0152");
                _charRef.Add("&oelig;", "\u0153");
                _charRef.Add("&ofcir;", "\u29BF");
                _charRef.Add("&Ofr;", "\uD835\uDD12");
                _charRef.Add("&ofr;", "\uD835\uDD2C");
                _charRef.Add("&ogon;", "\u02DB");
                _charRef.Add("&Ograve;", "\u00D2");
                _charRef.Add("&Ograve", "\u00D2");
                _charRef.Add("&ograve;", "\u00F2");
                _charRef.Add("&ograve", "\u00F2");
                _charRef.Add("&ogt;", "\u29C1");
                _charRef.Add("&ohbar;", "\u29B5");
                _charRef.Add("&ohm;", "\u03A9");
                _charRef.Add("&oint;", "\u222E");
                _charRef.Add("&olarr;", "\u21BA");
                _charRef.Add("&olcir;", "\u29BE");
                _charRef.Add("&olcross;", "\u29BB");
                _charRef.Add("&oline;", "\u203E");
                _charRef.Add("&olt;", "\u29C0");
                _charRef.Add("&Omacr;", "\u014C");
                _charRef.Add("&omacr;", "\u014D");
                _charRef.Add("&Omega;", "\u03A9");
                _charRef.Add("&omega;", "\u03C9");
                _charRef.Add("&Omicron;", "\u039F");
                _charRef.Add("&omicron;", "\u03BF");
                _charRef.Add("&omid;", "\u29B6");
                _charRef.Add("&ominus;", "\u2296");
                _charRef.Add("&Oopf;", "\uD835\uDD46");
                _charRef.Add("&oopf;", "\uD835\uDD60");
                _charRef.Add("&opar;", "\u29B7");
                _charRef.Add("&OpenCurlyDoubleQuote;", "\u201C");
                _charRef.Add("&OpenCurlyQuote;", "\u2018");
                _charRef.Add("&operp;", "\u29B9");
                _charRef.Add("&oplus;", "\u2295");
                _charRef.Add("&Or;", "\u2A54");
                _charRef.Add("&or;", "\u2228");
                _charRef.Add("&orarr;", "\u21BB");
                _charRef.Add("&ord;", "\u2A5D");
                _charRef.Add("&order;", "\u2134");
                _charRef.Add("&orderof;", "\u2134");
                _charRef.Add("&ordf;", "\u00AA");
                _charRef.Add("&ordf", "\u00AA");
                _charRef.Add("&ordm;", "\u00BA");
                _charRef.Add("&ordm", "\u00BA");
                _charRef.Add("&origof;", "\u22B6");
                _charRef.Add("&oror;", "\u2A56");
                _charRef.Add("&orslope;", "\u2A57");
                _charRef.Add("&orv;", "\u2A5B");
                _charRef.Add("&oS;", "\u24C8");
                _charRef.Add("&Oscr;", "\uD835\uDCAA");
                _charRef.Add("&oscr;", "\u2134");
                _charRef.Add("&Oslash;", "\u00D8");
                _charRef.Add("&Oslash", "\u00D8");
                _charRef.Add("&oslash;", "\u00F8");
                _charRef.Add("&oslash", "\u00F8");
                _charRef.Add("&osol;", "\u2298");
                _charRef.Add("&Otilde;", "\u00D5");
                _charRef.Add("&Otilde", "\u00D5");
                _charRef.Add("&otilde;", "\u00F5");
                _charRef.Add("&otilde", "\u00F5");
                _charRef.Add("&Otimes;", "\u2A37");
                _charRef.Add("&otimes;", "\u2297");
                _charRef.Add("&otimesas;", "\u2A36");
                _charRef.Add("&Ouml;", "\u00D6");
                _charRef.Add("&Ouml", "\u00D6");
                _charRef.Add("&ouml;", "\u00F6");
                _charRef.Add("&ouml", "\u00F6");
                _charRef.Add("&ovbar;", "\u233D");
                _charRef.Add("&OverBar;", "\u203E");
                _charRef.Add("&OverBrace;", "\u23DE");
                _charRef.Add("&OverBracket;", "\u23B4");
                _charRef.Add("&OverParenthesis;", "\u23DC");
                _charRef.Add("&par;", "\u2225");
                _charRef.Add("&para;", "\u00B6");
                _charRef.Add("&para", "\u00B6");
                _charRef.Add("&parallel;", "\u2225");
                _charRef.Add("&parsim;", "\u2AF3");
                _charRef.Add("&parsl;", "\u2AFD");
                _charRef.Add("&part;", "\u2202");
                _charRef.Add("&PartialD;", "\u2202");
                _charRef.Add("&Pcy;", "\u041F");
                _charRef.Add("&pcy;", "\u043F");
                _charRef.Add("&percnt;", "\u0025");
                _charRef.Add("&period;", "\u002E");
                _charRef.Add("&permil;", "\u2030");
                _charRef.Add("&perp;", "\u22A5");
                _charRef.Add("&pertenk;", "\u2031");
                _charRef.Add("&Pfr;", "\uD835\uDD13");
                _charRef.Add("&pfr;", "\uD835\uDD2D");
                _charRef.Add("&Phi;", "\u03A6");
                _charRef.Add("&phi;", "\u03C6");
                _charRef.Add("&phiv;", "\u03D5");
                _charRef.Add("&phmmat;", "\u2133");
                _charRef.Add("&phone;", "\u260E");
                _charRef.Add("&Pi;", "\u03A0");
                _charRef.Add("&pi;", "\u03C0");
                _charRef.Add("&pitchfork;", "\u22D4");
                _charRef.Add("&piv;", "\u03D6");
                _charRef.Add("&planck;", "\u210F");
                _charRef.Add("&planckh;", "\u210E");
                _charRef.Add("&plankv;", "\u210F");
                _charRef.Add("&plus;", "\u002B");
                _charRef.Add("&plusacir;", "\u2A23");
                _charRef.Add("&plusb;", "\u229E");
                _charRef.Add("&pluscir;", "\u2A22");
                _charRef.Add("&plusdo;", "\u2214");
                _charRef.Add("&plusdu;", "\u2A25");
                _charRef.Add("&pluse;", "\u2A72");
                _charRef.Add("&PlusMinus;", "\u00B1");
                _charRef.Add("&plusmn;", "\u00B1");
                _charRef.Add("&plusmn", "\u00B1");
                _charRef.Add("&plussim;", "\u2A26");
                _charRef.Add("&plustwo;", "\u2A27");
                _charRef.Add("&pm;", "\u00B1");
                _charRef.Add("&Poincareplane;", "\u210C");
                _charRef.Add("&pointint;", "\u2A15");
                _charRef.Add("&Popf;", "\u2119");
                _charRef.Add("&popf;", "\uD835\uDD61");
                _charRef.Add("&pound;", "\u00A3");
                _charRef.Add("&pound", "\u00A3");
                _charRef.Add("&Pr;", "\u2ABB");
                _charRef.Add("&pr;", "\u227A");
                _charRef.Add("&prap;", "\u2AB7");
                _charRef.Add("&prcue;", "\u227C");
                _charRef.Add("&prE;", "\u2AB3");
                _charRef.Add("&pre;", "\u2AAF");
                _charRef.Add("&prec;", "\u227A");
                _charRef.Add("&precapprox;", "\u2AB7");
                _charRef.Add("&preccurlyeq;", "\u227C");
                _charRef.Add("&Precedes;", "\u227A");
                _charRef.Add("&PrecedesEqual;", "\u2AAF");
                _charRef.Add("&PrecedesSlantEqual;", "\u227C");
                _charRef.Add("&PrecedesTilde;", "\u227E");
                _charRef.Add("&preceq;", "\u2AAF");
                _charRef.Add("&precnapprox;", "\u2AB9");
                _charRef.Add("&precneqq;", "\u2AB5");
                _charRef.Add("&precnsim;", "\u22E8");
                _charRef.Add("&precsim;", "\u227E");
                _charRef.Add("&Prime;", "\u2033");
                _charRef.Add("&prime;", "\u2032");
                _charRef.Add("&primes;", "\u2119");
                _charRef.Add("&prnap;", "\u2AB9");
                _charRef.Add("&prnE;", "\u2AB5");
                _charRef.Add("&prnsim;", "\u22E8");
                _charRef.Add("&prod;", "\u220F");
                _charRef.Add("&Product;", "\u220F");
                _charRef.Add("&profalar;", "\u232E");
                _charRef.Add("&profline;", "\u2312");
                _charRef.Add("&profsurf;", "\u2313");
                _charRef.Add("&prop;", "\u221D");
                _charRef.Add("&Proportion;", "\u2237");
                _charRef.Add("&Proportional;", "\u221D");
                _charRef.Add("&propto;", "\u221D");
                _charRef.Add("&prsim;", "\u227E");
                _charRef.Add("&prurel;", "\u22B0");
                _charRef.Add("&Pscr;", "\uD835\uDCAB");
                _charRef.Add("&pscr;", "\uD835\uDCC5");
                _charRef.Add("&Psi;", "\u03A8");
                _charRef.Add("&psi;", "\u03C8");
                _charRef.Add("&puncsp;", "\u2008");
                _charRef.Add("&Qfr;", "\uD835\uDD14");
                _charRef.Add("&qfr;", "\uD835\uDD2E");
                _charRef.Add("&qint;", "\u2A0C");
                _charRef.Add("&Qopf;", "\u211A");
                _charRef.Add("&qopf;", "\uD835\uDD62");
                _charRef.Add("&qprime;", "\u2057");
                _charRef.Add("&Qscr;", "\uD835\uDCAC");
                _charRef.Add("&qscr;", "\uD835\uDCC6");
                _charRef.Add("&quaternions;", "\u210D");
                _charRef.Add("&quatint;", "\u2A16");
                _charRef.Add("&quest;", "\u003F");
                _charRef.Add("&questeq;", "\u225F");
                _charRef.Add("&QUOT;", "\u0022");
                _charRef.Add("&QUOT", "\u0022");
                _charRef.Add("&quot;", "\u0022");
                _charRef.Add("&quot", "\u0022");
                _charRef.Add("&rAarr;", "\u21DB");
                _charRef.Add("&race;", "\u223D\u0331");
                _charRef.Add("&Racute;", "\u0154");
                _charRef.Add("&racute;", "\u0155");
                _charRef.Add("&radic;", "\u221A");
                _charRef.Add("&raemptyv;", "\u29B3");
                _charRef.Add("&Rang;", "\u27EB");
                _charRef.Add("&rang;", "\u27E9");
                _charRef.Add("&rangd;", "\u2992");
                _charRef.Add("&range;", "\u29A5");
                _charRef.Add("&rangle;", "\u27E9");
                _charRef.Add("&raquo;", "\u00BB");
                _charRef.Add("&raquo", "\u00BB");
                _charRef.Add("&Rarr;", "\u21A0");
                _charRef.Add("&rArr;", "\u21D2");
                _charRef.Add("&rarr;", "\u2192");
                _charRef.Add("&rarrap;", "\u2975");
                _charRef.Add("&rarrb;", "\u21E5");
                _charRef.Add("&rarrbfs;", "\u2920");
                _charRef.Add("&rarrc;", "\u2933");
                _charRef.Add("&rarrfs;", "\u291E");
                _charRef.Add("&rarrhk;", "\u21AA");
                _charRef.Add("&rarrlp;", "\u21AC");
                _charRef.Add("&rarrpl;", "\u2945");
                _charRef.Add("&rarrsim;", "\u2974");
                _charRef.Add("&Rarrtl;", "\u2916");
                _charRef.Add("&rarrtl;", "\u21A3");
                _charRef.Add("&rarrw;", "\u219D");
                _charRef.Add("&rAtail;", "\u291C");
                _charRef.Add("&ratail;", "\u291A");
                _charRef.Add("&ratio;", "\u2236");
                _charRef.Add("&rationals;", "\u211A");
                _charRef.Add("&RBarr;", "\u2910");
                _charRef.Add("&rBarr;", "\u290F");
                _charRef.Add("&rbarr;", "\u290D");
                _charRef.Add("&rbbrk;", "\u2773");
                _charRef.Add("&rbrace;", "\u007D");
                _charRef.Add("&rbrack;", "\u005D");
                _charRef.Add("&rbrke;", "\u298C");
                _charRef.Add("&rbrksld;", "\u298E");
                _charRef.Add("&rbrkslu;", "\u2990");
                _charRef.Add("&Rcaron;", "\u0158");
                _charRef.Add("&rcaron;", "\u0159");
                _charRef.Add("&Rcedil;", "\u0156");
                _charRef.Add("&rcedil;", "\u0157");
                _charRef.Add("&rceil;", "\u2309");
                _charRef.Add("&rcub;", "\u007D");
                _charRef.Add("&Rcy;", "\u0420");
                _charRef.Add("&rcy;", "\u0440");
                _charRef.Add("&rdca;", "\u2937");
                _charRef.Add("&rdldhar;", "\u2969");
                _charRef.Add("&rdquo;", "\u201D");
                _charRef.Add("&rdquor;", "\u201D");
                _charRef.Add("&rdsh;", "\u21B3");
                _charRef.Add("&Re;", "\u211C");
                _charRef.Add("&real;", "\u211C");
                _charRef.Add("&realine;", "\u211B");
                _charRef.Add("&realpart;", "\u211C");
                _charRef.Add("&reals;", "\u211D");
                _charRef.Add("&rect;", "\u25AD");
                _charRef.Add("&REG;", "\u00AE");
                _charRef.Add("&REG", "\u00AE");
                _charRef.Add("&reg;", "\u00AE");
                _charRef.Add("&reg", "\u00AE");
                _charRef.Add("&ReverseElement;", "\u220B");
                _charRef.Add("&ReverseEquilibrium;", "\u21CB");
                _charRef.Add("&ReverseUpEquilibrium;", "\u296F");
                _charRef.Add("&rfisht;", "\u297D");
                _charRef.Add("&rfloor;", "\u230B");
                _charRef.Add("&Rfr;", "\u211C");
                _charRef.Add("&rfr;", "\uD835\uDD2F");
                _charRef.Add("&rHar;", "\u2964");
                _charRef.Add("&rhard;", "\u21C1");
                _charRef.Add("&rharu;", "\u21C0");
                _charRef.Add("&rharul;", "\u296C");
                _charRef.Add("&Rho;", "\u03A1");
                _charRef.Add("&rho;", "\u03C1");
                _charRef.Add("&rhov;", "\u03F1");
                _charRef.Add("&RightAngleBracket;", "\u27E9");
                _charRef.Add("&RightArrow;", "\u2192");
                _charRef.Add("&Rightarrow;", "\u21D2");
                _charRef.Add("&rightarrow;", "\u2192");
                _charRef.Add("&RightArrowBar;", "\u21E5");
                _charRef.Add("&RightArrowLeftArrow;", "\u21C4");
                _charRef.Add("&rightarrowtail;", "\u21A3");
                _charRef.Add("&RightCeiling;", "\u2309");
                _charRef.Add("&RightDoubleBracket;", "\u27E7");
                _charRef.Add("&RightDownTeeVector;", "\u295D");
                _charRef.Add("&RightDownVector;", "\u21C2");
                _charRef.Add("&RightDownVectorBar;", "\u2955");
                _charRef.Add("&RightFloor;", "\u230B");
                _charRef.Add("&rightharpoondown;", "\u21C1");
                _charRef.Add("&rightharpoonup;", "\u21C0");
                _charRef.Add("&rightleftarrows;", "\u21C4");
                _charRef.Add("&rightleftharpoons;", "\u21CC");
                _charRef.Add("&rightrightarrows;", "\u21C9");
                _charRef.Add("&rightsquigarrow;", "\u219D");
                _charRef.Add("&RightTee;", "\u22A2");
                _charRef.Add("&RightTeeArrow;", "\u21A6");
                _charRef.Add("&RightTeeVector;", "\u295B");
                _charRef.Add("&rightthreetimes;", "\u22CC");
                _charRef.Add("&RightTriangle;", "\u22B3");
                _charRef.Add("&RightTriangleBar;", "\u29D0");
                _charRef.Add("&RightTriangleEqual;", "\u22B5");
                _charRef.Add("&RightUpDownVector;", "\u294F");
                _charRef.Add("&RightUpTeeVector;", "\u295C");
                _charRef.Add("&RightUpVector;", "\u21BE");
                _charRef.Add("&RightUpVectorBar;", "\u2954");
                _charRef.Add("&RightVector;", "\u21C0");
                _charRef.Add("&RightVectorBar;", "\u2953");
                _charRef.Add("&ring;", "\u02DA");
                _charRef.Add("&risingdotseq;", "\u2253");
                _charRef.Add("&rlarr;", "\u21C4");
                _charRef.Add("&rlhar;", "\u21CC");
                _charRef.Add("&rlm;", "\u200F");
                _charRef.Add("&rmoust;", "\u23B1");
                _charRef.Add("&rmoustache;", "\u23B1");
                _charRef.Add("&rnmid;", "\u2AEE");
                _charRef.Add("&roang;", "\u27ED");
                _charRef.Add("&roarr;", "\u21FE");
                _charRef.Add("&robrk;", "\u27E7");
                _charRef.Add("&ropar;", "\u2986");
                _charRef.Add("&Ropf;", "\u211D");
                _charRef.Add("&ropf;", "\uD835\uDD63");
                _charRef.Add("&roplus;", "\u2A2E");
                _charRef.Add("&rotimes;", "\u2A35");
                _charRef.Add("&RoundImplies;", "\u2970");
                _charRef.Add("&rpar;", "\u0029");
                _charRef.Add("&rpargt;", "\u2994");
                _charRef.Add("&rppolint;", "\u2A12");
                _charRef.Add("&rrarr;", "\u21C9");
                _charRef.Add("&Rrightarrow;", "\u21DB");
                _charRef.Add("&rsaquo;", "\u203A");
                _charRef.Add("&Rscr;", "\u211B");
                _charRef.Add("&rscr;", "\uD835\uDCC7");
                _charRef.Add("&Rsh;", "\u21B1");
                _charRef.Add("&rsh;", "\u21B1");
                _charRef.Add("&rsqb;", "\u005D");
                _charRef.Add("&rsquo;", "\u2019");
                _charRef.Add("&rsquor;", "\u2019");
                _charRef.Add("&rthree;", "\u22CC");
                _charRef.Add("&rtimes;", "\u22CA");
                _charRef.Add("&rtri;", "\u25B9");
                _charRef.Add("&rtrie;", "\u22B5");
                _charRef.Add("&rtrif;", "\u25B8");
                _charRef.Add("&rtriltri;", "\u29CE");
                _charRef.Add("&RuleDelayed;", "\u29F4");
                _charRef.Add("&ruluhar;", "\u2968");
                _charRef.Add("&rx;", "\u211E");
                _charRef.Add("&Sacute;", "\u015A");
                _charRef.Add("&sacute;", "\u015B");
                _charRef.Add("&sbquo;", "\u201A");
                _charRef.Add("&Sc;", "\u2ABC");
                _charRef.Add("&sc;", "\u227B");
                _charRef.Add("&scap;", "\u2AB8");
                _charRef.Add("&Scaron;", "\u0160");
                _charRef.Add("&scaron;", "\u0161");
                _charRef.Add("&sccue;", "\u227D");
                _charRef.Add("&scE;", "\u2AB4");
                _charRef.Add("&sce;", "\u2AB0");
                _charRef.Add("&Scedil;", "\u015E");
                _charRef.Add("&scedil;", "\u015F");
                _charRef.Add("&Scirc;", "\u015C");
                _charRef.Add("&scirc;", "\u015D");
                _charRef.Add("&scnap;", "\u2ABA");
                _charRef.Add("&scnE;", "\u2AB6");
                _charRef.Add("&scnsim;", "\u22E9");
                _charRef.Add("&scpolint;", "\u2A13");
                _charRef.Add("&scsim;", "\u227F");
                _charRef.Add("&Scy;", "\u0421");
                _charRef.Add("&scy;", "\u0441");
                _charRef.Add("&sdot;", "\u22C5");
                _charRef.Add("&sdotb;", "\u22A1");
                _charRef.Add("&sdote;", "\u2A66");
                _charRef.Add("&searhk;", "\u2925");
                _charRef.Add("&seArr;", "\u21D8");
                _charRef.Add("&searr;", "\u2198");
                _charRef.Add("&searrow;", "\u2198");
                _charRef.Add("&sect;", "\u00A7");
                _charRef.Add("&sect", "\u00A7");
                _charRef.Add("&semi;", "\u003B");
                _charRef.Add("&seswar;", "\u2929");
                _charRef.Add("&setminus;", "\u2216");
                _charRef.Add("&setmn;", "\u2216");
                _charRef.Add("&sext;", "\u2736");
                _charRef.Add("&Sfr;", "\uD835\uDD16");
                _charRef.Add("&sfr;", "\uD835\uDD30");
                _charRef.Add("&sfrown;", "\u2322");
                _charRef.Add("&sharp;", "\u266F");
                _charRef.Add("&SHCHcy;", "\u0429");
                _charRef.Add("&shchcy;", "\u0449");
                _charRef.Add("&SHcy;", "\u0428");
                _charRef.Add("&shcy;", "\u0448");
                _charRef.Add("&ShortDownArrow;", "\u2193");
                _charRef.Add("&ShortLeftArrow;", "\u2190");
                _charRef.Add("&shortmid;", "\u2223");
                _charRef.Add("&shortparallel;", "\u2225");
                _charRef.Add("&ShortRightArrow;", "\u2192");
                _charRef.Add("&ShortUpArrow;", "\u2191");
                _charRef.Add("&shy;", "\u00AD");
                _charRef.Add("&shy", "\u00AD");
                _charRef.Add("&Sigma;", "\u03A3");
                _charRef.Add("&sigma;", "\u03C3");
                _charRef.Add("&sigmaf;", "\u03C2");
                _charRef.Add("&sigmav;", "\u03C2");
                _charRef.Add("&sim;", "\u223C");
                _charRef.Add("&simdot;", "\u2A6A");
                _charRef.Add("&sime;", "\u2243");
                _charRef.Add("&simeq;", "\u2243");
                _charRef.Add("&simg;", "\u2A9E");
                _charRef.Add("&simgE;", "\u2AA0");
                _charRef.Add("&siml;", "\u2A9D");
                _charRef.Add("&simlE;", "\u2A9F");
                _charRef.Add("&simne;", "\u2246");
                _charRef.Add("&simplus;", "\u2A24");
                _charRef.Add("&simrarr;", "\u2972");
                _charRef.Add("&slarr;", "\u2190");
                _charRef.Add("&SmallCircle;", "\u2218");
                _charRef.Add("&smallsetminus;", "\u2216");
                _charRef.Add("&smashp;", "\u2A33");
                _charRef.Add("&smeparsl;", "\u29E4");
                _charRef.Add("&smid;", "\u2223");
                _charRef.Add("&smile;", "\u2323");
                _charRef.Add("&smt;", "\u2AAA");
                _charRef.Add("&smte;", "\u2AAC");
                _charRef.Add("&smtes;", "\u2AAC\uFE00");
                _charRef.Add("&SOFTcy;", "\u042C");
                _charRef.Add("&softcy;", "\u044C");
                _charRef.Add("&sol;", "\u002F");
                _charRef.Add("&solb;", "\u29C4");
                _charRef.Add("&solbar;", "\u233F");
                _charRef.Add("&Sopf;", "\uD835\uDD4A");
                _charRef.Add("&sopf;", "\uD835\uDD64");
                _charRef.Add("&spades;", "\u2660");
                _charRef.Add("&spadesuit;", "\u2660");
                _charRef.Add("&spar;", "\u2225");
                _charRef.Add("&sqcap;", "\u2293");
                _charRef.Add("&sqcaps;", "\u2293\uFE00");
                _charRef.Add("&sqcup;", "\u2294");
                _charRef.Add("&sqcups;", "\u2294\uFE00");
                _charRef.Add("&Sqrt;", "\u221A");
                _charRef.Add("&sqsub;", "\u228F");
                _charRef.Add("&sqsube;", "\u2291");
                _charRef.Add("&sqsubset;", "\u228F");
                _charRef.Add("&sqsubseteq;", "\u2291");
                _charRef.Add("&sqsup;", "\u2290");
                _charRef.Add("&sqsupe;", "\u2292");
                _charRef.Add("&sqsupset;", "\u2290");
                _charRef.Add("&sqsupseteq;", "\u2292");
                _charRef.Add("&squ;", "\u25A1");
                _charRef.Add("&Square;", "\u25A1");
                _charRef.Add("&square;", "\u25A1");
                _charRef.Add("&SquareIntersection;", "\u2293");
                _charRef.Add("&SquareSubset;", "\u228F");
                _charRef.Add("&SquareSubsetEqual;", "\u2291");
                _charRef.Add("&SquareSuperset;", "\u2290");
                _charRef.Add("&SquareSupersetEqual;", "\u2292");
                _charRef.Add("&SquareUnion;", "\u2294");
                _charRef.Add("&squarf;", "\u25AA");
                _charRef.Add("&squf;", "\u25AA");
                _charRef.Add("&srarr;", "\u2192");
                _charRef.Add("&Sscr;", "\uD835\uDCAE");
                _charRef.Add("&sscr;", "\uD835\uDCC8");
                _charRef.Add("&ssetmn;", "\u2216");
                _charRef.Add("&ssmile;", "\u2323");
                _charRef.Add("&sstarf;", "\u22C6");
                _charRef.Add("&Star;", "\u22C6");
                _charRef.Add("&star;", "\u2606");
                _charRef.Add("&starf;", "\u2605");
                _charRef.Add("&straightepsilon;", "\u03F5");
                _charRef.Add("&straightphi;", "\u03D5");
                _charRef.Add("&strns;", "\u00AF");
                _charRef.Add("&Sub;", "\u22D0");
                _charRef.Add("&sub;", "\u2282");
                _charRef.Add("&subdot;", "\u2ABD");
                _charRef.Add("&subE;", "\u2AC5");
                _charRef.Add("&sube;", "\u2286");
                _charRef.Add("&subedot;", "\u2AC3");
                _charRef.Add("&submult;", "\u2AC1");
                _charRef.Add("&subnE;", "\u2ACB");
                _charRef.Add("&subne;", "\u228A");
                _charRef.Add("&subplus;", "\u2ABF");
                _charRef.Add("&subrarr;", "\u2979");
                _charRef.Add("&Subset;", "\u22D0");
                _charRef.Add("&subset;", "\u2282");
                _charRef.Add("&subseteq;", "\u2286");
                _charRef.Add("&subseteqq;", "\u2AC5");
                _charRef.Add("&SubsetEqual;", "\u2286");
                _charRef.Add("&subsetneq;", "\u228A");
                _charRef.Add("&subsetneqq;", "\u2ACB");
                _charRef.Add("&subsim;", "\u2AC7");
                _charRef.Add("&subsub;", "\u2AD5");
                _charRef.Add("&subsup;", "\u2AD3");
                _charRef.Add("&succ;", "\u227B");
                _charRef.Add("&succapprox;", "\u2AB8");
                _charRef.Add("&succcurlyeq;", "\u227D");
                _charRef.Add("&Succeeds;", "\u227B");
                _charRef.Add("&SucceedsEqual;", "\u2AB0");
                _charRef.Add("&SucceedsSlantEqual;", "\u227D");
                _charRef.Add("&SucceedsTilde;", "\u227F");
                _charRef.Add("&succeq;", "\u2AB0");
                _charRef.Add("&succnapprox;", "\u2ABA");
                _charRef.Add("&succneqq;", "\u2AB6");
                _charRef.Add("&succnsim;", "\u22E9");
                _charRef.Add("&succsim;", "\u227F");
                _charRef.Add("&SuchThat;", "\u220B");
                _charRef.Add("&Sum;", "\u2211");
                _charRef.Add("&sum;", "\u2211");
                _charRef.Add("&sung;", "\u266A");
                _charRef.Add("&Sup;", "\u22D1");
                _charRef.Add("&sup;", "\u2283");
                _charRef.Add("&sup1;", "\u00B9");
                _charRef.Add("&sup1", "\u00B9");
                _charRef.Add("&sup2;", "\u00B2");
                _charRef.Add("&sup2", "\u00B2");
                _charRef.Add("&sup3;", "\u00B3");
                _charRef.Add("&sup3", "\u00B3");
                _charRef.Add("&supdot;", "\u2ABE");
                _charRef.Add("&supdsub;", "\u2AD8");
                _charRef.Add("&supE;", "\u2AC6");
                _charRef.Add("&supe;", "\u2287");
                _charRef.Add("&supedot;", "\u2AC4");
                _charRef.Add("&Superset;", "\u2283");
                _charRef.Add("&SupersetEqual;", "\u2287");
                _charRef.Add("&suphsol;", "\u27C9");
                _charRef.Add("&suphsub;", "\u2AD7");
                _charRef.Add("&suplarr;", "\u297B");
                _charRef.Add("&supmult;", "\u2AC2");
                _charRef.Add("&supnE;", "\u2ACC");
                _charRef.Add("&supne;", "\u228B");
                _charRef.Add("&supplus;", "\u2AC0");
                _charRef.Add("&Supset;", "\u22D1");
                _charRef.Add("&supset;", "\u2283");
                _charRef.Add("&supseteq;", "\u2287");
                _charRef.Add("&supseteqq;", "\u2AC6");
                _charRef.Add("&supsetneq;", "\u228B");
                _charRef.Add("&supsetneqq;", "\u2ACC");
                _charRef.Add("&supsim;", "\u2AC8");
                _charRef.Add("&supsub;", "\u2AD4");
                _charRef.Add("&supsup;", "\u2AD6");
                _charRef.Add("&swarhk;", "\u2926");
                _charRef.Add("&swArr;", "\u21D9");
                _charRef.Add("&swarr;", "\u2199");
                _charRef.Add("&swarrow;", "\u2199");
                _charRef.Add("&swnwar;", "\u292A");
                _charRef.Add("&szlig;", "\u00DF");
                _charRef.Add("&szlig", "\u00DF");
                _charRef.Add("&Tab;", "\u0009");
                _charRef.Add("&target;", "\u2316");
                _charRef.Add("&Tau;", "\u03A4");
                _charRef.Add("&tau;", "\u03C4");
                _charRef.Add("&tbrk;", "\u23B4");
                _charRef.Add("&Tcaron;", "\u0164");
                _charRef.Add("&tcaron;", "\u0165");
                _charRef.Add("&Tcedil;", "\u0162");
                _charRef.Add("&tcedil;", "\u0163");
                _charRef.Add("&Tcy;", "\u0422");
                _charRef.Add("&tcy;", "\u0442");
                _charRef.Add("&tdot;", "\u20DB");
                _charRef.Add("&telrec;", "\u2315");
                _charRef.Add("&Tfr;", "\uD835\uDD17");
                _charRef.Add("&tfr;", "\uD835\uDD31");
                _charRef.Add("&there4;", "\u2234");
                _charRef.Add("&Therefore;", "\u2234");
                _charRef.Add("&therefore;", "\u2234");
                _charRef.Add("&Theta;", "\u0398");
                _charRef.Add("&theta;", "\u03B8");
                _charRef.Add("&thetasym;", "\u03D1");
                _charRef.Add("&thetav;", "\u03D1");
                _charRef.Add("&thickapprox;", "\u2248");
                _charRef.Add("&thicksim;", "\u223C");
                _charRef.Add("&ThickSpace;", "\u205F\u200A");
                _charRef.Add("&thinsp;", "\u2009");
                _charRef.Add("&ThinSpace;", "\u2009");
                _charRef.Add("&thkap;", "\u2248");
                _charRef.Add("&thksim;", "\u223C");
                _charRef.Add("&THORN;", "\u00DE");
                _charRef.Add("&THORN", "\u00DE");
                _charRef.Add("&thorn;", "\u00FE");
                _charRef.Add("&thorn", "\u00FE");
                _charRef.Add("&Tilde;", "\u223C");
                _charRef.Add("&tilde;", "\u02DC");
                _charRef.Add("&TildeEqual;", "\u2243");
                _charRef.Add("&TildeFullEqual;", "\u2245");
                _charRef.Add("&TildeTilde;", "\u2248");
                _charRef.Add("&times;", "\u00D7");
                _charRef.Add("&times", "\u00D7");
                _charRef.Add("&timesb;", "\u22A0");
                _charRef.Add("&timesbar;", "\u2A31");
                _charRef.Add("&timesd;", "\u2A30");
                _charRef.Add("&tint;", "\u222D");
                _charRef.Add("&toea;", "\u2928");
                _charRef.Add("&top;", "\u22A4");
                _charRef.Add("&topbot;", "\u2336");
                _charRef.Add("&topcir;", "\u2AF1");
                _charRef.Add("&Topf;", "\uD835\uDD4B");
                _charRef.Add("&topf;", "\uD835\uDD65");
                _charRef.Add("&topfork;", "\u2ADA");
                _charRef.Add("&tosa;", "\u2929");
                _charRef.Add("&tprime;", "\u2034");
                _charRef.Add("&TRADE;", "\u2122");
                _charRef.Add("&trade;", "\u2122");
                _charRef.Add("&triangle;", "\u25B5");
                _charRef.Add("&triangledown;", "\u25BF");
                _charRef.Add("&triangleleft;", "\u25C3");
                _charRef.Add("&trianglelefteq;", "\u22B4");
                _charRef.Add("&triangleq;", "\u225C");
                _charRef.Add("&triangleright;", "\u25B9");
                _charRef.Add("&trianglerighteq;", "\u22B5");
                _charRef.Add("&tridot;", "\u25EC");
                _charRef.Add("&trie;", "\u225C");
                _charRef.Add("&triminus;", "\u2A3A");
                _charRef.Add("&TripleDot;", "\u20DB");
                _charRef.Add("&triplus;", "\u2A39");
                _charRef.Add("&trisb;", "\u29CD");
                _charRef.Add("&tritime;", "\u2A3B");
                _charRef.Add("&trpezium;", "\u23E2");
                _charRef.Add("&Tscr;", "\uD835\uDCAF");
                _charRef.Add("&tscr;", "\uD835\uDCC9");
                _charRef.Add("&TScy;", "\u0426");
                _charRef.Add("&tscy;", "\u0446");
                _charRef.Add("&TSHcy;", "\u040B");
                _charRef.Add("&tshcy;", "\u045B");
                _charRef.Add("&Tstrok;", "\u0166");
                _charRef.Add("&tstrok;", "\u0167");
                _charRef.Add("&twixt;", "\u226C");
                _charRef.Add("&twoheadleftarrow;", "\u219E");
                _charRef.Add("&twoheadrightarrow;", "\u21A0");
                _charRef.Add("&Uacute;", "\u00DA");
                _charRef.Add("&Uacute", "\u00DA");
                _charRef.Add("&uacute;", "\u00FA");
                _charRef.Add("&uacute", "\u00FA");
                _charRef.Add("&Uarr;", "\u219F");
                _charRef.Add("&uArr;", "\u21D1");
                _charRef.Add("&uarr;", "\u2191");
                _charRef.Add("&Uarrocir;", "\u2949");
                _charRef.Add("&Ubrcy;", "\u040E");
                _charRef.Add("&ubrcy;", "\u045E");
                _charRef.Add("&Ubreve;", "\u016C");
                _charRef.Add("&ubreve;", "\u016D");
                _charRef.Add("&Ucirc;", "\u00DB");
                _charRef.Add("&Ucirc", "\u00DB");
                _charRef.Add("&ucirc;", "\u00FB");
                _charRef.Add("&ucirc", "\u00FB");
                _charRef.Add("&Ucy;", "\u0423");
                _charRef.Add("&ucy;", "\u0443");
                _charRef.Add("&udarr;", "\u21C5");
                _charRef.Add("&Udblac;", "\u0170");
                _charRef.Add("&udblac;", "\u0171");
                _charRef.Add("&udhar;", "\u296E");
                _charRef.Add("&ufisht;", "\u297E");
                _charRef.Add("&Ufr;", "\uD835\uDD18");
                _charRef.Add("&ufr;", "\uD835\uDD32");
                _charRef.Add("&Ugrave;", "\u00D9");
                _charRef.Add("&Ugrave", "\u00D9");
                _charRef.Add("&ugrave;", "\u00F9");
                _charRef.Add("&ugrave", "\u00F9");
                _charRef.Add("&uHar;", "\u2963");
                _charRef.Add("&uharl;", "\u21BF");
                _charRef.Add("&uharr;", "\u21BE");
                _charRef.Add("&uhblk;", "\u2580");
                _charRef.Add("&ulcorn;", "\u231C");
                _charRef.Add("&ulcorner;", "\u231C");
                _charRef.Add("&ulcrop;", "\u230F");
                _charRef.Add("&ultri;", "\u25F8");
                _charRef.Add("&Umacr;", "\u016A");
                _charRef.Add("&umacr;", "\u016B");
                _charRef.Add("&uml;", "\u00A8");
                _charRef.Add("&uml", "\u00A8");
                _charRef.Add("&UnderBar;", "\u005F");
                _charRef.Add("&UnderBrace;", "\u23DF");
                _charRef.Add("&UnderBracket;", "\u23B5");
                _charRef.Add("&UnderParenthesis;", "\u23DD");
                _charRef.Add("&Union;", "\u22C3");
                _charRef.Add("&UnionPlus;", "\u228E");
                _charRef.Add("&Uogon;", "\u0172");
                _charRef.Add("&uogon;", "\u0173");
                _charRef.Add("&Uopf;", "\uD835\uDD4C");
                _charRef.Add("&uopf;", "\uD835\uDD66");
                _charRef.Add("&UpArrow;", "\u2191");
                _charRef.Add("&Uparrow;", "\u21D1");
                _charRef.Add("&uparrow;", "\u2191");
                _charRef.Add("&UpArrowBar;", "\u2912");
                _charRef.Add("&UpArrowDownArrow;", "\u21C5");
                _charRef.Add("&UpDownArrow;", "\u2195");
                _charRef.Add("&Updownarrow;", "\u21D5");
                _charRef.Add("&updownarrow;", "\u2195");
                _charRef.Add("&UpEquilibrium;", "\u296E");
                _charRef.Add("&upharpoonleft;", "\u21BF");
                _charRef.Add("&upharpoonright;", "\u21BE");
                _charRef.Add("&uplus;", "\u228E");
                _charRef.Add("&UpperLeftArrow;", "\u2196");
                _charRef.Add("&UpperRightArrow;", "\u2197");
                _charRef.Add("&Upsi;", "\u03D2");
                _charRef.Add("&upsi;", "\u03C5");
                _charRef.Add("&upsih;", "\u03D2");
                _charRef.Add("&Upsilon;", "\u03A5");
                _charRef.Add("&upsilon;", "\u03C5");
                _charRef.Add("&UpTee;", "\u22A5");
                _charRef.Add("&UpTeeArrow;", "\u21A5");
                _charRef.Add("&upuparrows;", "\u21C8");
                _charRef.Add("&urcorn;", "\u231D");
                _charRef.Add("&urcorner;", "\u231D");
                _charRef.Add("&urcrop;", "\u230E");
                _charRef.Add("&Uring;", "\u016E");
                _charRef.Add("&uring;", "\u016F");
                _charRef.Add("&urtri;", "\u25F9");
                _charRef.Add("&Uscr;", "\uD835\uDCB0");
                _charRef.Add("&uscr;", "\uD835\uDCCA");
                _charRef.Add("&utdot;", "\u22F0");
                _charRef.Add("&Utilde;", "\u0168");
                _charRef.Add("&utilde;", "\u0169");
                _charRef.Add("&utri;", "\u25B5");
                _charRef.Add("&utrif;", "\u25B4");
                _charRef.Add("&uuarr;", "\u21C8");
                _charRef.Add("&Uuml;", "\u00DC");
                _charRef.Add("&Uuml", "\u00DC");
                _charRef.Add("&uuml;", "\u00FC");
                _charRef.Add("&uuml", "\u00FC");
                _charRef.Add("&uwangle;", "\u29A7");
                _charRef.Add("&vangrt;", "\u299C");
                _charRef.Add("&varepsilon;", "\u03F5");
                _charRef.Add("&varkappa;", "\u03F0");
                _charRef.Add("&varnothing;", "\u2205");
                _charRef.Add("&varphi;", "\u03D5");
                _charRef.Add("&varpi;", "\u03D6");
                _charRef.Add("&varpropto;", "\u221D");
                _charRef.Add("&vArr;", "\u21D5");
                _charRef.Add("&varr;", "\u2195");
                _charRef.Add("&varrho;", "\u03F1");
                _charRef.Add("&varsigma;", "\u03C2");
                _charRef.Add("&varsubsetneq;", "\u228A\uFE00");
                _charRef.Add("&varsubsetneqq;", "\u2ACB\uFE00");
                _charRef.Add("&varsupsetneq;", "\u228B\uFE00");
                _charRef.Add("&varsupsetneqq;", "\u2ACC\uFE00");
                _charRef.Add("&vartheta;", "\u03D1");
                _charRef.Add("&vartriangleleft;", "\u22B2");
                _charRef.Add("&vartriangleright;", "\u22B3");
                _charRef.Add("&Vbar;", "\u2AEB");
                _charRef.Add("&vBar;", "\u2AE8");
                _charRef.Add("&vBarv;", "\u2AE9");
                _charRef.Add("&Vcy;", "\u0412");
                _charRef.Add("&vcy;", "\u0432");
                _charRef.Add("&VDash;", "\u22AB");
                _charRef.Add("&Vdash;", "\u22A9");
                _charRef.Add("&vDash;", "\u22A8");
                _charRef.Add("&vdash;", "\u22A2");
                _charRef.Add("&Vdashl;", "\u2AE6");
                _charRef.Add("&Vee;", "\u22C1");
                _charRef.Add("&vee;", "\u2228");
                _charRef.Add("&veebar;", "\u22BB");
                _charRef.Add("&veeeq;", "\u225A");
                _charRef.Add("&vellip;", "\u22EE");
                _charRef.Add("&Verbar;", "\u2016");
                _charRef.Add("&verbar;", "\u007C");
                _charRef.Add("&Vert;", "\u2016");
                _charRef.Add("&vert;", "\u007C");
                _charRef.Add("&VerticalBar;", "\u2223");
                _charRef.Add("&VerticalLine;", "\u007C");
                _charRef.Add("&VerticalSeparator;", "\u2758");
                _charRef.Add("&VerticalTilde;", "\u2240");
                _charRef.Add("&VeryThinSpace;", "\u200A");
                _charRef.Add("&Vfr;", "\uD835\uDD19");
                _charRef.Add("&vfr;", "\uD835\uDD33");
                _charRef.Add("&vltri;", "\u22B2");
                _charRef.Add("&vnsub;", "\u2282\u20D2");
                _charRef.Add("&vnsup;", "\u2283\u20D2");
                _charRef.Add("&Vopf;", "\uD835\uDD4D");
                _charRef.Add("&vopf;", "\uD835\uDD67");
                _charRef.Add("&vprop;", "\u221D");
                _charRef.Add("&vrtri;", "\u22B3");
                _charRef.Add("&Vscr;", "\uD835\uDCB1");
                _charRef.Add("&vscr;", "\uD835\uDCCB");
                _charRef.Add("&vsubnE;", "\u2ACB\uFE00");
                _charRef.Add("&vsubne;", "\u228A\uFE00");
                _charRef.Add("&vsupnE;", "\u2ACC\uFE00");
                _charRef.Add("&vsupne;", "\u228B\uFE00");
                _charRef.Add("&Vvdash;", "\u22AA");
                _charRef.Add("&vzigzag;", "\u299A");
                _charRef.Add("&Wcirc;", "\u0174");
                _charRef.Add("&wcirc;", "\u0175");
                _charRef.Add("&wedbar;", "\u2A5F");
                _charRef.Add("&Wedge;", "\u22C0");
                _charRef.Add("&wedge;", "\u2227");
                _charRef.Add("&wedgeq;", "\u2259");
                _charRef.Add("&weierp;", "\u2118");
                _charRef.Add("&Wfr;", "\uD835\uDD1A");
                _charRef.Add("&wfr;", "\uD835\uDD34");
                _charRef.Add("&Wopf;", "\uD835\uDD4E");
                _charRef.Add("&wopf;", "\uD835\uDD68");
                _charRef.Add("&wp;", "\u2118");
                _charRef.Add("&wr;", "\u2240");
                _charRef.Add("&wreath;", "\u2240");
                _charRef.Add("&Wscr;", "\uD835\uDCB2");
                _charRef.Add("&wscr;", "\uD835\uDCCC");
                _charRef.Add("&xcap;", "\u22C2");
                _charRef.Add("&xcirc;", "\u25EF");
                _charRef.Add("&xcup;", "\u22C3");
                _charRef.Add("&xdtri;", "\u25BD");
                _charRef.Add("&Xfr;", "\uD835\uDD1B");
                _charRef.Add("&xfr;", "\uD835\uDD35");
                _charRef.Add("&xhArr;", "\u27FA");
                _charRef.Add("&xharr;", "\u27F7");
                _charRef.Add("&Xi;", "\u039E");
                _charRef.Add("&xi;", "\u03BE");
                _charRef.Add("&xlArr;", "\u27F8");
                _charRef.Add("&xlarr;", "\u27F5");
                _charRef.Add("&xmap;", "\u27FC");
                _charRef.Add("&xnis;", "\u22FB");
                _charRef.Add("&xodot;", "\u2A00");
                _charRef.Add("&Xopf;", "\uD835\uDD4F");
                _charRef.Add("&xopf;", "\uD835\uDD69");
                _charRef.Add("&xoplus;", "\u2A01");
                _charRef.Add("&xotime;", "\u2A02");
                _charRef.Add("&xrArr;", "\u27F9");
                _charRef.Add("&xrarr;", "\u27F6");
                _charRef.Add("&Xscr;", "\uD835\uDCB3");
                _charRef.Add("&xscr;", "\uD835\uDCCD");
                _charRef.Add("&xsqcup;", "\u2A06");
                _charRef.Add("&xuplus;", "\u2A04");
                _charRef.Add("&xutri;", "\u25B3");
                _charRef.Add("&xvee;", "\u22C1");
                _charRef.Add("&xwedge;", "\u22C0");
                _charRef.Add("&Yacute;", "\u00DD");
                _charRef.Add("&Yacute", "\u00DD");
                _charRef.Add("&yacute;", "\u00FD");
                _charRef.Add("&yacute", "\u00FD");
                _charRef.Add("&YAcy;", "\u042F");
                _charRef.Add("&yacy;", "\u044F");
                _charRef.Add("&Ycirc;", "\u0176");
                _charRef.Add("&ycirc;", "\u0177");
                _charRef.Add("&Ycy;", "\u042B");
                _charRef.Add("&ycy;", "\u044B");
                _charRef.Add("&yen;", "\u00A5");
                _charRef.Add("&yen", "\u00A5");
                _charRef.Add("&Yfr;", "\uD835\uDD1C");
                _charRef.Add("&yfr;", "\uD835\uDD36");
                _charRef.Add("&YIcy;", "\u0407");
                _charRef.Add("&yicy;", "\u0457");
                _charRef.Add("&Yopf;", "\uD835\uDD50");
                _charRef.Add("&yopf;", "\uD835\uDD6A");
                _charRef.Add("&Yscr;", "\uD835\uDCB4");
                _charRef.Add("&yscr;", "\uD835\uDCCE");
                _charRef.Add("&YUcy;", "\u042E");
                _charRef.Add("&yucy;", "\u044E");
                _charRef.Add("&Yuml;", "\u0178");
                _charRef.Add("&yuml;", "\u00FF");
                _charRef.Add("&yuml", "\u00FF");
                _charRef.Add("&Zacute;", "\u0179");
                _charRef.Add("&zacute;", "\u017A");
                _charRef.Add("&Zcaron;", "\u017D");
                _charRef.Add("&zcaron;", "\u017E");
                _charRef.Add("&Zcy;", "\u0417");
                _charRef.Add("&zcy;", "\u0437");
                _charRef.Add("&Zdot;", "\u017B");
                _charRef.Add("&zdot;", "\u017C");
                _charRef.Add("&zeetrf;", "\u2128");
                _charRef.Add("&ZeroWidthSpace;", "\u200B");
                _charRef.Add("&Zeta;", "\u0396");
                _charRef.Add("&zeta;", "\u03B6");
                _charRef.Add("&Zfr;", "\u2128");
                _charRef.Add("&zfr;", "\uD835\uDD37");
                _charRef.Add("&ZHcy;", "\u0416");
                _charRef.Add("&zhcy;", "\u0436");
                _charRef.Add("&zigrarr;", "\u21DD");
                _charRef.Add("&Zopf;", "\u2124");
                _charRef.Add("&zopf;", "\uD835\uDD6B");
                _charRef.Add("&Zscr;", "\uD835\uDCB5");
                _charRef.Add("&zscr;", "\uD835\uDCCF");
                _charRef.Add("&zwj;", "\u200D");
                _charRef.Add("&zwnj;", "\u200C");

            }
            return _charRef;
        }


        private static Dictionary<int, string> _unicodeChar;
        public static Dictionary<int, string> unicodeCharacters()
        {
            if (_unicodeChar == null)
            {
                _unicodeChar = new Dictionary<int, string>();

                Dictionary<string, string> originalList = new Dictionary<string, string>();
                originalList.Add("0x00", "U+FFFD");
                originalList.Add("0x80", "U+20AC");
                originalList.Add("0x82", "U+201A");
                originalList.Add("0x83", "U+0192");
                originalList.Add("0x84", "U+201E");
                originalList.Add("0x85", "U+2026");
                originalList.Add("0x86", "U+2020");
                originalList.Add("0x87", "U+2021");
                originalList.Add("0x88", "U+02C6");
                originalList.Add("0x89", "U+2030");
                originalList.Add("0x8A", "U+0160");
                originalList.Add("0x8B", "U+2039");
                originalList.Add("0x8C", "U+0152");
                originalList.Add("0x8E", "U+017D");
                originalList.Add("0x91", "U+2018");
                originalList.Add("0x92", "U+2019");
                originalList.Add("0x93", "U+201C");
                originalList.Add("0x94", "U+201D");
                originalList.Add("0x95", "U+2022");
                originalList.Add("0x96", "U+2013");
                originalList.Add("0x97", "U+2014");
                originalList.Add("0x98", "U+02DC");
                originalList.Add("0x99", "U+2122");
                originalList.Add("0x9A", "U+0161");
                originalList.Add("0x9B", "U+203A");
                originalList.Add("0x9C", "U+0153");
                originalList.Add("0x9E", "U+017E");
                originalList.Add("0x9F", "U+0178");

                foreach (var item in originalList)
                {
                    string key = item.Key;
                    string value = item.Value;
                    int intkey = Convert.ToInt32(key, 16);
                    value = value.Replace("U+", "");
                    int codepoint = Convert.ToInt32(value, 16);
                    string b = char.ConvertFromUtf32(codepoint);

                    _unicodeChar.Add(intkey, b);
                }

                //0x00	U+FFFD	REPLACEMENT CHARACTER
                //0x80	U+20AC	EURO SIGN (€)
                //0x82	U+201A	SINGLE LOW-9 QUOTATION MARK (‚)
                //0x83	U+0192	LATIN SMALL LETTER F WITH HOOK (ƒ)
                //0x84	U+201E	DOUBLE LOW-9 QUOTATION MARK („)
                //0x85	U+2026	HORIZONTAL ELLIPSIS (…)
                //0x86	U+2020	DAGGER (†)
                //0x87	U+2021	DOUBLE DAGGER (‡)
                //0x88	U+02C6	MODIFIER LETTER CIRCUMFLEX ACCENT (ˆ)
                //0x89	U+2030	PER MILLE SIGN (‰)
                //0x8A	U+0160	LATIN CAPITAL LETTER S WITH CARON (Š)
                //0x8B	U+2039	SINGLE LEFT-POINTING ANGLE QUOTATION MARK (‹)
                //0x8C	U+0152	LATIN CAPITAL LIGATURE OE (Œ)
                //0x8E	U+017D	LATIN CAPITAL LETTER Z WITH CARON (Ž)
                //0x91	U+2018	LEFT SINGLE QUOTATION MARK (‘)
                //0x92	U+2019	RIGHT SINGLE QUOTATION MARK (’)
                //0x93	U+201C	LEFT DOUBLE QUOTATION MARK (“)
                //0x94	U+201D	RIGHT DOUBLE QUOTATION MARK (”)
                //0x95	U+2022	BULLET (•)
                //0x96	U+2013	EN DASH (–)
                //0x97	U+2014	EM DASH (—)
                //0x98	U+02DC	SMALL TILDE (˜)
                //0x99	U+2122	TRADE MARK SIGN (™)
                //0x9A	U+0161	LATIN SMALL LETTER S WITH CARON (š)
                //0x9B	U+203A	SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (›)
                //0x9C	U+0153	LATIN SMALL LIGATURE OE (œ)
                //0x9E	U+017E	LATIN SMALL LETTER Z WITH CARON (ž)
                //0x9F	U+0178	LATIN CAPITAL LETTER Y WITH DIAERESIS (Ÿ)

            }

            return _unicodeChar;

        }


        public static bool isValidCharacters(int codepoint)
        {
            ///Otherwise, return a character token for the Unicode character whose code point is that number. 
            ///Additionally, if the number is in the range 0x0001 to 0x0008, 0x000D to 0x001F, 0x007F to 0x009F, 
            ///0xFDD0 to 0xFDEF, or is one of 0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, 0x1FFFF, 0x2FFFE, 
            ///0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE,
            ///0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 
            ///0xCFFFF, 0xDFFFE, 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, 0x10FFFE, or 0x10FFFF, 
            ///then this is a parse error.
      
         
           /// 0x0001 to 0x0008, 0x000D to 0x001F, 0x007F to 0x009F, 0xFDD0 to 0xFDEF,
            if ((codepoint >= Convert.ToInt32("0x0001", 16) && codepoint <= Convert.ToInt32("0x0008", 16)) || (codepoint >= Convert.ToInt32("0x000D", 16) && codepoint <= Convert.ToInt32("0x001F", 16))  || (codepoint >= Convert.ToInt32("0x007F", 16) && codepoint <= Convert.ToInt32("0x009F", 16))  ||  (codepoint >= Convert.ToInt32("0xFDD0", 16) && codepoint <= Convert.ToInt32("0xFDEF", 16)))
            {
                return false;
            }
            else 
            {
               string listofchars = "0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, 0x10FFFE,0x10FFFF";

                string [] charitems = listofchars.Split(',');

                foreach (var item in charitems)
	            {
		             int decode = Convert.ToInt32(item.ToString().Trim(), 16);
                    if (codepoint == decode)
                    {
                        return false;
                    }
	            }

            }
           
           return true;
          
        }

    }
}
